Pascal WriteLn失败了

Hoo*_*och 0 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.
Run Code Online (Sandbox Code Playgroud)

这是输出:

...
4072 ThisIsTest
4073 ThisIsTest
4074 ThisIsTest
4075 ThisIsTe
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,它只是在句子的中间停止而且并不是全部写的.所有这些都取决于一个WriteLn insturction的持续时间和调用次数.

怎么解决?

我尝试使用名为WriteFile的"Windows"模块中的WinApi函数,但是我没能将最后3个参数传递给它.


大新闻

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

Ant*_*nko 5

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