私は学校のためにパスカルで小さなプロジェクトに取り組んでいます。Lazaruz1.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
ご覧のとおり、文の途中で止まり、すべてを書いているわけではありません。すべては、1つのWriteLn命令の長さと、それが呼び出される回数によって異なります。
それを修正する方法は?
WriteFileという「Windows」モジュールのWinApi関数を使おうとしましたが、最後の3つの引数を渡すことができませんでした。
大きな更新
ありがとう。その例では、それは機能します(ファイルを閉じる)。しかし、開いたファイルハンドルを、「var」を介して書き込んでいる関数に渡す、もう少し複雑なプログラムがあります。そして、でそのファイルを閉じた後でも、何もしません。それはおかしい。