0

我正在为学校做帕斯卡的小项目。我正在使用 Lazaruz 1.0.2

写入文件时,wirteLn 函数出现问题。一段时间后,它会停止写入文件。

以这个程序为例:

var oFile: Text;
  i: LongWord;
begin
  Assign(oFile, 'test.txt');
  ReWrite(oFile);
  for i:=1 to 4096 do
  WriteLn(oFile, 'ThisIsTest');
  CloseFile(oFile);//Added as suggested
end.

这是输出:

...
4072 ThisIsTest
4073 ThisIsTest
4074 ThisIsTest
4075 ThisIsTe

如您所见,它只是停在句子的中间,并没有全部写完。一切都取决于一个 WriteLn 指令有多长以及它被调用了多少次。

如何解决?

我尝试使用名为 WriteFile 的“Windows”模块中的 WinApi 函数,但我未能将最后 3 个参数传递给它。


大更新

谢谢。在该示例中有效(关闭文件)。但是我有一些更复杂的程序,我将打开的文件句柄传递给通过“var”写入它的函数。即使在关闭该文件之后,并且什么也不做。它很奇怪。

4

2 回答 2

5

您应该Close(oFile)在程序结束时确保刷新输出。

于 2013-01-17T10:22:57.157 回答
1

也可以通过添加来更新文件而不关闭它(在这个例子中)

Flush(oFile); 写完之后

这在您可能有一个长文件并希望确保它定期更新的情况下很有用。当然,您仍然应该在完成后关闭文件。

于 2013-03-26T13:47:33.037 回答