如我的文本文件格式为:
  dfjgkfjkgjfg
  fgfkgfg
  9809l[]
  QQdhfdhfj
  3264273647834
  ejwrjre假如只在以QQ开头的行的尾部加上'123',程序该如何写?请教高手

解决方案 »

  1.   

    最方便的方法是不是用TStringList读进来然后对每一行搜索,再写回去?
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      f,tf:textfile;
      re,path:string;
      j:integer;
    begin
      application.Title:='处理文本文件';
      assignfile(f,'e:\er.txt');
      rewrite(tf,'e:\texter.txt');
      reset(f);
      try
        while not eof(f) do
          begin
            readln(f,re);
            if pos('QQ',re)=1then
              re:=re+'123';
            append(tf);
            writeln(tf,re);
          end;
      finally
        closefile(f);
        closefile(tf);
      end;
      showmessage('处理完毕!');end;
    这样的话,速度最快了,
      

  3.   

    var
      StrL:TStrings
      i:integer;
    begin
      StrL:=TStringList.Create;
      StrL.LoadFromFile('..');//读入文件;
      for i:=0 to StrL.Count-1 do
      begin
        if pos('QQ',StrL[i])=1 then
           StrL[i]:=StrL[i]+'123';
      end;
      StrL.SaveToFile('..');//保存至文件;
    end;
      

  4.   

    回复人: ICMGDCHN(紫风铃) ( ) 信誉:96 支持
      

  5.   

    c中可以在文件中定位,pascal中似乎也可以啊。
    不好意思,很久没有看pascal了啊
      

  6.   

    xyqxj你到底学了多久delphi?你以为append(tf)是向文件插入行的?lianshaohua的代码把append那行去掉就ok了。因为你已经rewrite了,不需要再append。这样做反而影响性能,而且还是循环调用!还有,反复open一个文件,会不会引起内存泄露(handle)?还是错误?这个我没有试验。
      

  7.   

    是文本文件,好像就可以用reset来实现对已有的文件进行修改而不用append了用rewrite和savetofile都是重新写整个文件了这样会浪费很多资源
      

  8.   

    yxf请看清楚了,他的代码是生成一个新文件。你说的方法完全不可行。
      

  9.   

    同意ICMGDCHN(紫风铃) ( )