delphi – 读取和写入文本文件的最佳方式
发布时间:2020-12-15 09:33:57 所属栏目:大数据 来源:网络整理
导读:我使用的是最新版本的Lazarus IDE,我的TForm1上有一个Memo1.我必须在Memo1中加载一个文本文件,然后编辑Memo的每一行(我使用Memo1.Lines.Strings [i]:= …).最后,我必须将编辑的备忘录保存在特定路径中. 问题:我正在寻找更快的方式: 将整个文本加载到备忘
我使用的是最新版本的Lazarus IDE,我的TForm1上有一个Memo1.我必须在Memo1中加载一个文本文件,然后编辑Memo的每一行(我使用Memo1.Lines.Strings [i]:= …).最后,我必须将编辑的备忘录保存在特定路径中.
问题:我正在寻找更快的方式: >将整个文本加载到备忘录中,编辑其内容并保存到新文件中(全部加载 – > gt;全部编辑 – >全部写入) 我是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; 如果(正如您在上面的评论中所述)您需要在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); 当然,最简单的方法是编写一个接受任何类型的简单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; 然后你可以用任何一个调用它: 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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |