バグ(?)について

解決


ハニー  2003-03-16 11:08:01  No: 3152

作成したプログラムを実行すると途中で「応答なし」になります。
そこで何故かShowMessage関数を入れると平気になり不思議でしょうがありません。
それはコンピューターのバグなのでしょうか?
プロジェクトが作成できるので構文上は問題ないはずなのですが・・・
「応答なし」になりやすい構文の作り方、もしくはなりにくい方法ご存知の方が
いらっしゃるならば教えていただきたいです。よろしくお願いします。


Kob  2003-03-16 12:42:44  No: 3153

どのようなプログラムを書いたのでしょうか?

コードを示して頂けると、回答がつきやすくなると思います。


たかみちえ  URL  2003-03-16 16:14:59  No: 3154

ShowMessageを実行すると平気になる…。
  そういうときはだいたい、"ShowMessageを表示すると処理がいったん止まる"ということが、
ポイントになっているとおもいます。


ハニー  2003-03-18 09:33:04  No: 3155

Kobさん、たかみちえさんありがとうございます。
コードは手元にないので今は示せません、申し訳ないです。
後日に示したいと思います。

ShowMessageの他に簡単に処理がいったん止まるものにはどのようなものが
あるのでしょうか?Labelに表示するというのは行っているのですが、当たり前にこれは効果がありません。
プログラムに影響しない程度のイベント、関数を行いたいのですが・・・


にしの  2003-03-18 17:50:09  No: 3156

Label.Caption := 進捗状況表示
のあと、
Application.ProcessMessages;
を入れると良いです。
応答なしになるのは、何らかのループ処理が原因と思われます。
該当するループ処理に、同じようにProcessMessageを呼び出す処理を加えてみてください。


たかみちえ  URL  2003-03-18 17:51:29  No: 3157

Application.ProcessMessages…今メッセージキューにあるメッセージを全部処理する
  Sleep(API)…指定ミリ秒間、動作を停止させる
  Wait(おんぷ村倉庫>Delphiユニット>stdFiles内関数)…指定ミリ秒間、ProcessMessagesだけの空ループを実行(http://TakamiChie.tripod.co.jp/)

  こういうとき一番有効なのが、一番上のProcessMessagesです。
今たまっているメッセージを全部処理するので、何もないときは止まらないし、
あんまり動作に被害がありません。

  メッセージキューについてはうちの旧学校、ProcessMessagesについては、
ヘルプやBorlandのサイト参照


Kuborin  2003-03-19 19:09:10  No: 3158

はじめましてm(__)m
応答なしになりにくいPGという件ですが
Loop処理であれば
Doeventsを入れてみてはいかがでしょうか?
私の経験上、応答なしというのは
プログラムが停止していることよりも
Windowsからそのプログラムにメッセージを送っても
そのプログラムの作業に急がしすぎて答えるひまがない
ということが多かったです。
そこでいったんウインドウズに制御を渡すという
DoEventsを入れるといいと思います。
但しこれを多用すると処理速度が遅くなることもありますので
注意してください


にしの  2003-03-19 19:46:51  No: 3159

DoEventsはVBですよ。
Delphiのそれに相当するものは、Application.ProcessMessagesです。


ハニー  2003-03-21 10:42:35  No: 3160

みなさんどうもありがとうございます。
ProcessMessageを試してみたいと思います。
たくさんのご解答ありがとうございました。


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

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






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