強制終了された場合に

解決


駆け出し  2005-08-17 20:40:29  No: 17099  IP: 192.*.*.*

いつもお世話になっております。

プログラム実行中にOSの終了された場合や、タスクマネージャなどから強制終了された場合に、確実にファイルをクローズしたいのですが、なにか方法はありますか?
やはり強制終了時は難しいでしょうか?

もし可能な方法がある場合に、プログラム中で「Halt」による異常終了を使った場合に、それでもファイルクローズをさせる方法はあるでしょうか?
よろしくお願いします。

編集 削除
メッサ  2005-08-17 21:20:00  No: 17100  IP: 192.*.*.*

実行中にwindowsが終了しようとしているかどうかの判断は
WM_QUERYENDSESSION のメッセージを引っ掛ければできると思いますが
違ってたらすみません。

編集 削除
メッサ  2005-08-17 21:23:57  No: 17101  IP: 192.*.*.*

追記ですが・・・
Windows が終了するときに、
ファイルをクローズして終了する場合は
OnCloseQuery イベントが発生するはずなので
ここでファイルの処理をすればよいはずです。

編集 削除
メラトニン  2005-08-17 22:52:26  No: 17102  IP: 192.*.*.*

"強制終了"の場合は確か無かったと思います。
だから強制なんですよ。
マメにファイルを閉じる、バックアップファイルを作成する、しか無いと思います。

編集 削除
メラトニン  2005-08-18 09:31:04  No: 17103  IP: 192.*.*.*

表現が曖昧でした、
"強制終了"→プロセスの終了
です。
タスクマネージャから行えます。

編集 削除
DBOX  2005-08-18 13:31:19  No: 17104  IP: 192.*.*.*

SaveToFileを使えば一行で済みますし、データを失うリスクを
考えれば少々面倒でも保存処理をしたほうが良いと思います。

編集 削除
Fusa  2005-08-18 15:35:56  No: 17105  IP: 192.*.*.*

タスクマネージャーのプロセスの終了だと
プログラム側から感知する方法はなかった
ような気がします。

終了時ではなく
情報に変更があったときに
常に保存しておくとよさそうですね。

編集 削除
駆け出し  2005-08-18 17:28:08  No: 17106  IP: 192.*.*.*

メッサさん、メラトニンさん、DBOXさん、Fusaさん、ありがとうございます。
現在のプログラムは、"writeln"で逐一書き出す仕様なんですが、
クローズをせずに終了すると、書き出されているはずの文字が
少し足りないんです。
なので、クローズしてしっかりと思ったわけなんです。
毎回開いて、書いて、閉じる、とするのがよさそうですね。

編集 削除
保証  2005-08-18 21:51:21  No: 17107  IP: 192.*.*.*

>現在のプログラムは、"writeln"で逐一書き出す仕様なんですが、
>クローズをせずに終了すると、書き出されているはずの文字が
>少し足りないんです。

Writeln の後に Flush(F); しときましょ。

編集 削除
駆け出し  2005-08-19 13:00:33  No: 17108  IP: 192.*.*.*

保障さんありがとうございます。
Flushがあったんですね。
まさに単語がわからない為に、英語が話せない状態・・・
助かりました!

編集 削除