如何操作TFileStream

时间:2011-12-12 15:54:48

标签: delphi pascal

最近你好我用TextFile替换TFileStream。我从来没有使用它,所以我的问题很小。

  • 如何在将文件分配给变量后添加文件?
  • 如何阅读文件的某个表单?

我需要定义该文件的行格式,所以我做了类似的事情:

var linia_klienta:array[0..30] of string;
AssignFile(tempPlik,'klienci.txt');
Reset(tempPlik);
i:=0;
While Not Eof(tempPlik) do
  begin
    Readln(tempPlik,linia_klient[i]);
    inc(i);
  end;
CloseFile(tempPlik);

然后当需要第二行时,我只需

edit1.text = linia_klienta[1];

4 个答案:

答案 0 :(得分:13)

如果您需要阅读文本文件并访问每一行,请尝试使用此类的TStringList类,您可以加载文件,读取数据(使用索引访问每一行)并保存数据回来。

类似这样的事情

FText  : TStringList;
i : integer;
begin
 FText := TStringList.Create;
 try
  FText.LoadFromFile('C:\Foo\Foo.txt');

    //read the lines
    for i:=0 to FText.Count-1 do    
     ProcessLine(FText[i]);  //do something   

  //Add additional lines
  FText.Add('Adding a new line to the end');
  FText.Add('Adding a new line to the end');    

  //Save the data back
  FText.SaveToFile('C:\Foo\Foo.txt');

 finally
  FText.Free;
 end;

end;

end;

答案 1 :(得分:6)

我可以使用TStreamReader / TStreamWriter的新版Delphi这里是使用TStreamReader的一个示例...这仅用于操作文本文件

var
  SR : TStreamReader;
  line : String;
begin
  SR := TStreamReader.Create('D:\test.txt');
  while not (SR.EndOfStream) do
  begin
    line := SR.ReadLine;
    ShowMessage(line);
  end;
  SR.Free;
 end;

答案 2 :(得分:1)

TStream及其直系后代大多是低级访问类。它们主要处理通用缓冲区。有一些更专业的类来自或使用流来执行更高级别的任务。

由于Delphi 1可以使用TReader和TWriter直接读取和编写Delphi类型(包含字符串),但是它们并不是为处理“面向行”的文件而设计的(不幸的是它们设计得过多,因为组件属性是流式的,而不是作为通用框架)。

Turbo Power SysTools有一个很好的TStAnsiTextStream类,它以类似于TextFile的方式实现对文本文件的面向行的访问。自Delphi 2009以来,新类(参见opc0de answer)实现了相同类型的访问,而不需要第三方库(此外,由于Delphi 2009扩展代码页支持,包括Unicode,它们支持不同的编码)。

答案 3 :(得分:0)

根据您的目的,取决于您需要的流类。

您想使用文本(带有折线和行尾字符的字符)数据吗?

或者,您想使用二进制数据吗?

我看到你正在使用一个char数组,而不是字符串。 你真的想要使用字符数据就好像它是二进制的吗? 有时,某些应用程序需要这种情况。