lazarus / delphi (pascal) - 写入 txt 文件,下次不覆盖

lazarus / delphi (pascal) - writing to txt file without overwriting next time

我正在使用 lazarus,我想将程序关闭时的信息保存到 txt 文件中。但每次我重新打开程序时,它都会覆盖 txt 文件中之前的内容。每次写入下一行甚至创建不同的 txt 文件都可以。这就是我所拥有的:

var
  ...
  s: TStringList;

  s:= TStringList.Create;
  s.Add(datetostr(now));
  s.SaveToFile(datetostr(now)+'.txt');
  s.Free;

但我没有报错

您需要做的就是以追加模式打开文件,然后添加文本。它会将新数据放在文件的末尾:

  AssignFile(tfOut, C_FNAME);

  try
    // Open for append, write and close.
    append(tfOut);

    writeln(tfOut, 'New data for text file');
    writeln(tfOut, 'New informtion should be at the end of the file.');

    CloseFile(tfOut);

  except
    on E: EInOutError do
     writeln('File error. Elaboration: ', E.Message);
  end;

另一种使用 tstringlist 的方法是:

s: TStringList;

s:= TStringList.Create;

s.loadfromfile('myfile.name');

s.Add( datetostr( 现在 ) );

( 或 s.text := s.text + lineending + datetostr( now ) )

s.SaveToFile('myfile.name');

s.Free;