我的程序正在处理传入的字符串(来自 Telnet、HTTP 等),我必须使用 Delphi XE2 将这些字符串写入文本文件以进行日志记录。
有时程序可能会崩溃,我需要确保剩余的字符串不会丢失,所以我打开/关闭每个传入字符串的文件,我遇到了一些性能问题。例如,下面的代码需要 8 秒才能完成。
我的代码包含在下面,有什么方法可以提高性能吗?
(对于下面的测试,只需创建一个带有 a Button : Button1
、带有OnClick
事件和 a的表单Label : lbl1
)。
Procedure AddToFile(Source: string; FileName :String);
var
FText : Text;
TmpBuf: array[word] of byte;
Begin
{$I-}
AssignFile(FText, FileName);
Append(FText);
SetTextBuf(FText, TmpBuf);
Writeln(FText, Source);
CloseFile(FText);
{$I+}
end;
procedure initF(FileName : string);
Var FText : text;
begin
{$I-}
if FileExists(FileName) then DeleteFile(FileName);
AssignFile(FText, FileName);
ReWrite(FText);
CloseFile(FText);
{$I+}
end;
procedure TForm1.Button1Click(Sender: TObject);
var tTime : TDateTime;
iBcl : Integer;
FileName : string;
begin
FileName := 'c:\Test.txt';
lbl1.Caption := 'Go->' + FileName; lbl1.Refresh;
initF(FileName);
tTime := Now;
For iBcl := 0 to 2000 do
AddToFile(IntToStr(ibcl) + ' ' + 'lkjlkjlkjlkjlkjlkjlkj' , FileName);
lbl1.Caption := FormatDateTime('sss:zzz',Now-tTime);
end;