最近你好我用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];
答案 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数组,而不是字符串。 你真的想要使用字符数据就好像它是二进制的吗? 有时,某些应用程序需要这种情况。