Pascal WriteLn失败了

时间:2013-01-17 10:11:48

标签: pascal freepascal lazarus

我正在Pascal的小型项目上学。 我正在使用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 insturction有多长,以及它被调用多少次。

如何解决?

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


BIG UPDATE

感谢。这个例子中有效(关闭文件)。但是我有一些更复杂的程序,我将打开的文件句柄传递给通过“var”写入它的函数。即使在关闭该文件后也没有做任何事情。这很奇怪。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

也可以通过添加(在此示例中)

来更新文件而不关闭它

Flush(oFile); 在Writeln之后

如果您有一个长文件并希望确保定期更新,这将非常有用。当然,完成后你仍然应该关闭文件。