いつもお世話になっております。
プログラム実行中にOSの終了された場合や、タスクマネージャなどから強制終了された場合に、確実にファイルをクローズしたいのですが、なにか方法はありますか?
やはり強制終了時は難しいでしょうか?
もし可能な方法がある場合に、プログラム中で「Halt」による異常終了を使った場合に、それでもファイルクローズをさせる方法はあるでしょうか?
よろしくお願いします。
実行中にwindowsが終了しようとしているかどうかの判断は
WM_QUERYENDSESSION のメッセージを引っ掛ければできると思いますが
違ってたらすみません。
追記ですが・・・
Windows が終了するときに、
ファイルをクローズして終了する場合は
OnCloseQuery イベントが発生するはずなので
ここでファイルの処理をすればよいはずです。
"強制終了"の場合は確か無かったと思います。
だから強制なんですよ。
マメにファイルを閉じる、バックアップファイルを作成する、しか無いと思います。
表現が曖昧でした、
"強制終了"→プロセスの終了
です。
タスクマネージャから行えます。
SaveToFileを使えば一行で済みますし、データを失うリスクを
考えれば少々面倒でも保存処理をしたほうが良いと思います。
タスクマネージャーのプロセスの終了だと
プログラム側から感知する方法はなかった
ような気がします。
終了時ではなく
情報に変更があったときに
常に保存しておくとよさそうですね。
メッサさん、メラトニンさん、DBOXさん、Fusaさん、ありがとうございます。
現在のプログラムは、"writeln"で逐一書き出す仕様なんですが、
クローズをせずに終了すると、書き出されているはずの文字が
少し足りないんです。
なので、クローズしてしっかりと思ったわけなんです。
毎回開いて、書いて、閉じる、とするのがよさそうですね。
>現在のプログラムは、"writeln"で逐一書き出す仕様なんですが、
>クローズをせずに終了すると、書き出されているはずの文字が
>少し足りないんです。
Writeln の後に Flush(F); しときましょ。
保障さんありがとうございます。
Flushがあったんですね。
まさに単語がわからない為に、英語が話せない状態・・・
助かりました!
ツイート | ![]() |