各为大侠
在下有一段用来处理字符转换的程序
procedure replspace(const filename:String);
var
  t:TstringList;
  s:String ;
begin
  t:=TstringList.Create;
  t.LoadFromFile(filename);
  s:=StringReplace(t.Text,' ',',',[rfReplaceAll]);
  t.Text:=s;
  t.SaveToFile(filename);
  t.free;
end;
实现的是将一个文本中所有的空格转化成逗号`,运行时发现:当处理一个大约3m的文本的时候就需要大概3分钟的时间是什么原因呢~,有没有什么办法能够让他处理较大文本(3M,5M乃至10M)时候速度变快?
望各路大侠侠义相救,小菜鸟不剩感激~!

解决方案 »

  1.   

    不要用s,直接
     t.Text:=StringReplace(t.Text,' ',',',[rfReplaceAll]);
      

  2.   

    你可以在每一行语句后都记录一下当前时间,然后就知道是哪个语句费时了(我猜是StringReplace)。
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      t:TstringList;
      s:String ;
      i:integer;
    begin
      t:=TstringList.Create;
      t.LoadFromFile('c:\1.txt');
      ProgressBar1.Min:=0;
      ProgressBar1.Max:=t.Count-1;
      for i:=0 to t.Count-1 do
      begin
      Application.ProcessMessages;
      ProgressBar1.Position:=i;
      t.Strings[i]:=StringReplace(t.Strings[i],' ',',',[rfReplaceAll]);
      end;
      t.SaveToFile('c:\2.txt');
      t.free;
      ShowMessage('ok');
    end;
      

  4.   

    几M或者几十M的文本,你的程序就是在执行
      s:=StringReplace(t.Text,' ',',',[rfReplaceAll]);
      t.Text:=s;
    这两句话的时候太耗费资源,无法响应,所以看起来象死掉了一样