lazarus/delphi(pascal)-写入txt文件而无需下次覆盖

lazarus/delphi(pascal)-写入txt文件而无需下次覆盖,pascal,lazarus,freepascal,delphi,Pascal,Lazarus,Freepascal,Delphi,我正在使用lazarus,我想在程序关闭时将信息保存到txt文件中。但每次我重新打开程序,它都会覆盖以前在txt文件中的内容。每次都可以写入下一行,甚至创建不同的txt文件。这就是我所拥有的: var ... s: TStringList; s:= TStringList.Create; s.Add(datetostr(now)); s.SaveToFile(datetostr(now)+'.txt'); s.Free; 但是我给了我一个错误你需要做的就是以附加模式打

我正在使用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、 添加(datetostr(现在))

(或s.text:=s.text+lineending+datetostr(现在))

s、 SaveToFile('myfile.name')


s、 免费的

打开一个文件流,搜索到底,保存到流如果你有一个错误,你可以看到它是什么。我们不能。我们要猜吗?你看到错误信息了吗?日期作为字符串可能有路径分隔符。为什么我们需要猜测。我检查了所有编译器错误消息,但找不到“错误”消息。根据您的区域设置,DateToStr结果中可能有斜杠,这将使其作为文件名无效。改用FormatDateTime,并确保结果是正确的文件名。在你的格式中也要使用小时、分钟和秒,这样你就可以一天运行多次。如果op的应用程序是VCL应用程序,则不会。