下面是一个简单的控制台应用程序,然后生成10组3个随机数,并将它们打印到控制台窗口和文本文件"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.
Run Code Online (Sandbox Code Playgroud)
仅当我包含第26行时,文本文件才包含与控制台窗口相同的信息:
关闭(OUTPUTFILE);
如果我从代码中省略了这一点,我希望无论如何都能将相同的数据打印到文本文件中,但实际打印在文本文件中的内容与前9行相同,然后是不完整的最终行.
为什么会这样?由于省略了Close程序,最后一行只能通过什么过程写入?
Pet*_*esh 11
这是因为文件输出是缓冲的.当您关闭文件时,它会刷新缓冲区并将剩余的内容输出到磁盘.
另一种方法是Flush(outputFile)在WriteLn为文件执行之后执行相同的操作,但是会牺牲性能.
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |