Alb*_*ola 5 delphi file-io text-files lazarus fpc
我使用的是Lazarus IDE的最新版本,Memo1
我的TForm1上有一个.我必须加载一个文本文件Memo1
,然后编辑备忘录的每一行(我使用Memo1.Lines.Strings[i] := ...
).最后,我必须将编辑的备忘录保存在特定路径中.
问题:我正在寻找更快的方式:
while
循环(直到我的*.txt
文件末尾)逐行读取文件,编辑内容并将其保存在新文件中.(加载行 - >编辑 - >写入|加载 - >编辑 - >写入|加载行 - >编辑 - >写入... ...)我是Delphi开发的新手,我也读过一些关于TStringLists
.我的文本文件将有很多行(它可能有5000多行),我不希望我的程序失去性能.
有什么建议吗?我应该使用TStringList
我之前列出的两种方法之一吗?
5000
线条不是很多,除非字符串很长.
最简单的方法是使用TStringList
.除非用户需要查看或编辑内容,否则无需使用GUI控件.
var
SL: TStringList;
i: Integer;
begin
SL := TStringList.Create;
try
SL.LoadFromFile(YourFileNameHere);
for i := 0 to SL.Count - 1 do
begin
SL[i] := IntToStr(i) + ' ' + SL[i];
// Do any other processing
end;
SL.SaveToFile(YourFileNameHere);
finally
SL.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
如果(正如您在上面的评论中所述)您需要在TMemo
测试目的中执行此操作,您可以采用相同的方式:
Memo1.Lines.LoadFromFile(YourFileNameHere);
for i := 0 to Memo1.Lines.Count - 1 do
Memo1.Lines[i] := IntToStr(i) + ' ' + Memo1.Lines[i];
Memo1.Lines.SaveToFile(YourFileNameHere);
Run Code Online (Sandbox Code Playgroud)
当然,最简单的方法是编写一个接受TStrings
任何类型的简单后代的过程:
procedure AppendValueToStrings(const SL: TStrings;
StartingValue: Integer);
var
i: Integer;
begin
Assert(Assigned(SL)); // Make sure a valid TStrings has been passed in
for i := 0 to SL.Count - 1 do
begin
SL[i] := IntToStr(StartingValue) + ' ' + SL[i];
Inc(StartingValue);
end;
end;
Run Code Online (Sandbox Code Playgroud)
然后你可以用任何一个调用它:
SL := TStringList.Create;
try
SL.LoadFromFile(YourFileNameHere);
AppendValueToStrings(SL, 10);
SL.SaveToFile(YourFileNameHere);
finally
SL.Free;
end;
Memo1.Lines.LoadFromFile(YourFileNameHere);
AppendValueToStrings(Memo1.Lines, 10);
Memo1.Lines.SaveToFile(YourFileNameHere);
Run Code Online (Sandbox Code Playgroud)