【发布时间】:2013-01-17 10:11:48
【问题描述】:
我正在帕斯卡为学校做一个小项目。 我正在使用 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”写入它的函数。即使在关闭该文件之后,并且什么也不做。很奇怪。
【问题讨论】:
-
这是 1997 年稳定的功能。如果复杂的场景仍然失败,则必须有另一个错误。继续简化直到问题消失。那么你有一个公平的机会,你的最后一次更改与错误的地方有关。
-
@MarcovandeVoort 一直以来我都无法修复它。但这是我一生中将看到的最后一个 Pascal 项目。我什至尝试使用 Winapi 函数写入文件,但 Pascal 不可能将 NULL、NIL 或 0 作为参数传递。也因此无法使用winapi函数WriteFile。
标签: pascal freepascal lazarus