私のプログラムは着信文字列 (Telnet、HTTP などから) を処理しており、これらをログ用に Delphi XE2 でテキスト ファイルに書き込む必要があります。
プログラムがクラッシュする場合があり、残りの文字列が失われていないことを確認する必要があるため、着信文字列ごとにファイルを開いたり閉じたりすると、パフォーマンスの問題が発生します。たとえば、次のコードは完了するまでに 8 秒かかります。
私のコードは以下に含まれています。パフォーマンスを改善する方法はありますか?
(以下のテストではButton : Button1
、 、OnClick
イベント、および を含むフォームを作成するだけです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;