我是这样写的,但是每次执行的时候都是从第一行写起
如何才能在每次点击button1的时候写进一行呢(从文件的末尾开始)。
请各位不吝赐教procedure TForm1.Button1Click(Sender: TObject);var
onerow:string;
statistics:tstringlist;begin
statistics:= TStringList.Create;
onerow:='abcdefasfjdkfjsalfsadfsdfsf';
statistics.Add(onerow);
statistics.SaveToFile('test.txt');
statistics.Free;
end;

解决方案 »

  1.   

    打开时用append把文件指针移到文件末尾var f:file of datatype;
      data:datatype;...
    append(f);
    write(f,data);
      

  2.   

    你用TStringList.SaveToFile当然会把原先的都覆盖掉
    为什么不用textfile呢
    var
      OneRow:string;
      MyFile: TextFile;
    begin
      OneRow := 'abcdefasfjdkfjsalfsadfsdfsf';
      AssignFile(MyFile, 'C:\TEMP.txt');
      Append(MyFile);
      WriteLN(MyFile, OneRow);
      CloseFile(MyFile);
    end;
      

  3.   

    偶认为必须先加载文本:(调试通过)
    ////////////////////////////////////////
    procedure TForm1.Button1Click(Sender: TObject);var
    onerow:string;
    statistics:tstringlist;begin
    statistics:= TStringList.Create;
    statistics.loadfromfile('test.txt');
    onerow:='abcdefasfjdkfjsalfsadfsdfsf';
    statistics.Add(onerow);
    statistics.SaveToFile('test.txt');
    statistics.Free;
    end;
      

  4.   

    如果你想定位文本指针到文件尾:
    可以用
    function FileSeek(Handle, Offset, Origin: Integer): Integer; overload;
    Origin(起始)   0 :定位文件开头.
                   1 :定位文件中央.
                   2 :定位在文件尾.
    Offset: 偏移量.
    handle   文件句柄.在Delphi帮助上的例程:
    procedure TForm1.Button1Click(Sender: TObject);var
      iFileHandle: Integer;
      iFileLength: Integer;
      iBytesRead: Integer;
      Buffer: PChar;
      i: Integer
    begin
      if OpenDialog1.Execute then
      begin
        try
          iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
          iFileLength := FileSeek(iFileHandle,0,2);
          FileSeek(iFileHandle,0,0);
          Buffer := PChar(AllocMem(iFileLength + 1));
          iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);      FileClose(iFileHandle);
          for i := 0 to iBytesRead-1 do
          begin
            StringGrid1.RowCount := StringGrid1.RowCount + 1;
            StringGrid1.Cells[1,i+1] := Buffer[i];
            StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer[i]));
          end;
        finally
          FreeMem(Buffer);
        end;
      end;
    end;自己看吧~~~~!
      

  5.   

    转贴:
    //写
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Stream:TFileStream;
      c:array[0..100] of char;
    begin
      c:='11你想要写入的信息';
      Stream:=TFileStream.Create('FileNa.AA',fmOpenReadWrite);
      Stream.Seek(0,soFromEnd );
      Stream.Write(c,100);
      Stream.Free;
    end;// 读
    procedure TForm1.Button2Click(Sender: TObject);
    var
      Stream:TFileStream;
      Inf:String;
      c:array[0..100] of char;
      i:integer;
    begin
      Stream:=TFileStream.Create('FileNa.AA',fmOpenRead);
      Stream.Seek(soFromBeginning,100 );
      Stream.Read(c,100);
      for i:=0 to 100 do
      begin
        inf:=inf+c[i];
      end;
      Memo1.Lines.Add(c);
      Stream.Free;
    end;