Delphi Tstringlist,写文件同步

时间:2011-07-04 10:11:54

标签: delphi file-io delphi-7 tstringlist

我使用tstringlist创建一个非常简单的日志。我把它写到文件:

pLog.SaveToFile(FileName);
某个地方有一个错误,我的电脑关机了。 之后,我找不到我的日志文件。可能该文件以asych模式保存。 还有一种方法可以等待写入继续执行吗?

谢谢, 阿尔贝托

2 个答案:

答案 0 :(得分:9)

如果 savetofile 调用是在程序结束,并且程序异常终止,则此调用可能不会执行。我使用一种日志记录机制,每次日志调用都会打开日志文件,写入日志文本和时间,刷新然后关闭日志文件。这样,即使程序异常终止,也可以保证日志文本被写入文件。

以下是代码:

procedure TMainForm.Log (const s: string);
var
 f: textfile;

begin
 assignfile (f, logfilename);
 {$I-}  // yes, I know: modern programming style requires a try/except block
 append (f);
 if ioresult <> 0 then rewrite (f);
 {$I+}
 writeln (f, datetostr (now), ' ', timetostr (now), ' ', s);
 flush (f);
 closefile (f);
end;

答案 1 :(得分:3)

TStringList.SaveToFile同步操作。

问题最明显的原因是:

  1. 您没有致电TStringList.SaveToFile
  2. 文件名无效(可能路径不存在)。
  3. 文件名位于用户没有写入权限的文件夹中(例如程序文件文件夹)。