以下は単純なコンソール アプリケーションで、3 つの乱数を 10 セット生成し、コンソール ウィンドウとテキスト ファイル 'Output.txt' の両方に出力します。
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
outputFile: TextFile;
i: Integer;
a,b,c: Single;
begin
try
Randomize;
AssignFile(outputFile, 'Output.txt');
ReWrite(outputFile);
for i := 0 to 9 do
begin
a := Random;
b := Random;
c := Random;
WriteLn(FloatToStr(a) + Char(9) + FloatToStr(b) + Char(9) + FloatToStr(c));
WriteLn(outputFile, FloatToStr(a) + Char(9) + FloatToStr(b) + Char(9) + FloatToStr(c));
end;
Close(outputFile);
Sleep(10000);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
テキスト ファイルには、26 行目を含めた場合にのみ、コンソール ウィンドウと同じ情報が保持されます。
閉じる (出力ファイル);
コードからこれを省略した場合、とにかく同じデータがテキスト ファイルに出力されると予想されますが、実際にテキスト ファイルに出力されるのは最初の 9 行と不完全な最終行で同じです。
なぜこれが起こるのですか?Close 手順を省略したために最終行が部分的にしか書き込まれないのは、どのようなプロセスによるものですか?