強制終了された場合に

解決


駆け出し  2005-08-18 05:40:29  No: 17099

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

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

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


メッサ  2005-08-18 06:20:00  No: 17100

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


メッサ  2005-08-18 06:23:57  No: 17101

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


メラトニン  2005-08-18 07:52:26  No: 17102

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


メラトニン  2005-08-18 18:31:04  No: 17103

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


DBOX  2005-08-18 22:31:19  No: 17104

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


Fusa  2005-08-19 00:35:56  No: 17105

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

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


駆け出し  2005-08-19 02:28:08  No: 17106

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


保証  2005-08-19 06:51:21  No: 17107

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

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


駆け出し  2005-08-19 22:00:33  No: 17108

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加