您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> 如何提高读写文本文件的效率?

如何提高读写文本文件的效率?

来源:网络整理     时间:2016/7/17 12:24:42     关键词:

关于网友提出的“ 如何提高读写文本文件的效率?”问题疑问,本网通过在网上对“ 如何提高读写文本文件的效率?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 如何提高读写文本文件的效率?
描述:

procedure TTfrmMain.SBtnGOClick(Sender: TObject);
var
  F: TextFile;
  N: TextFile;
  S: String;
  T: String;
begin
  S:='';T:='';
  if OpenDialog1.Execute then
  begin
    AssignFile(N,'c:\tmp.txt');
    if FileExists('c:\tmp.txt') then
      Reset(N)
    else
      Rewrite(N);
    AssignFile(F,OpenDialog1.FileName);
    Reset(F);
    while not eof(F) do
    begin
      Readln(F,S);
      if (S<>T) then
      begin
        Append(N);
        Writeln(N,S);
        T:=S;
      end
      else
      begin
        T:=S;
      end;
    end;
    CloseFile(F);
    CloseFile(N);
    ShowMessage('文档已处理完毕,请在c:\目录下察看');
  end;
end;
以上是源代码,我是要将原文件中的不重复的行写到另外一个文件中。但是发现以上方法,处理上万行的文本文件是速度特别慢!不知道有什么提高效率的方法!


解决方案1:

试试这样:
uses IniFiles;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  StrList, RStrList: THashedStringList;
  S, T: String;
begin
  StrList := THashedStringList.Create;
  RStrList := THashedStringList.Create;
  StrList.LoadFromFile('c:\tmp.txt');
  RStrList.BeginUpdate;
  StrList.Sort;
  S := StrList[0];
  for I := 1 to StrList.Count do
  begin
    T := StrList[I];
    if S <> T then
    begin
      S := T;
      RStrList.Add(S);
    end;
  end;
  RStrList.EndUpdate;
  RStrList.SaveToFile('OpenDialog1.FileName');
end;
另,如果重复的行不是挨着的,你的代码并不能剔除它们。
—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————


以上介绍了“ 如何提高读写文本文件的效率?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2745431.html

相关图片

相关文章