思想:我们在写日志文件的时候习惯将所有的日志文件全部Add到一个List链表里面,然后用定时器定时从List链表中取数据写文件。
所以我使用TStringList,将所以日志Add到TStringList里面,然后用定时器从TStringList里面取数据写日志。
procedure Tfoffertool.OnReadListTimer(Sender: TObject);
var
sysDir : string;
strMsg : string;
logfile: string;
begin
//创建日志文件
sysDir:=extractfilepath(application.ExeName);
logfile:=formatdatetime('yyyyy-mm-dd', Now()) + '.log'; // 在字符串前加上日期
if not directoryexists(sysdir) then
createdir(sysdir);
AssignFile(mylog,logfile);
if fileexists(sysDir+logfile) then
append(mylog)
else
rewrite(mylog);
while ((mylogList.Count) > 0) do
begin
strMsg := mylogList.Text; //从List里面读取数据这个是读取块
//好像也可以这样每次读取一行:
//strMsg := mylogList[0];
//mylogList.Delete(0);
mmolog.Text := mmolog.Text + strMsg; //将数据显示在TMemo控件中
mylogList.Clear;
Writeln(mylog,strMsg); //写日志里
end;
CloseFile(mylog); //关闭文件流
end;