加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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;全部编辑 – >全部写入)
>执行一段时间循环(直到我的* .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;

如果(正如您在上面的评论中所述)您需要在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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读