こんばんは。
もしかすると、この質問はバージョンや、環境に依存しているのかもしれませんが、回答よろしくお願いいたします。
その質問なのですが、私の条件(Delphi6Pro, Win98SE, Celeron300A)で次のコードを書くとデバッグ実行時にフォームのボタン(Button1)を押したとき、3割くらいの確率でDelphiがハングしてしまうのです。
procedure TForm1.OnButton1Click(Sender : TObject);
begin
if OpenDialog1.Execute then
begin
end;
end;
なぜ止まってしまうのか、まったく分かりませんでしたが、コードを追跡していくと、どうやらOpenDialogがフックをかけた(?)ところで止まってしまうようです。(いまいちあいまいです(汗))
ちなみに今わかっていることは…遅いCPUのほうが止まることが多い(ような気がする)、フックするコードの直前でいったんブレークさせて再度実行するとかなり回避できる(ような気がする)…どちらも確証はありません(^^;
TOpenDialogという、使用頻度の高そうな(?)コンポーネントだけに、Borlandがバグを混入させているとは思えないのですが、ということはOSのほうの問題ということなのでしょうか…。それともBorlandに頼めば、なんとかしてくれるのでしょうか…。
とにかくOpenDialogがデバッグで使えないとなると、ファイルはドラッグドロップで渡すくらいしかなくなるのですが、それは非常に不便で、なんとかしてDelphiのデバッグでもOpenDialogを使いたいのです。
そこで、
1.皆さまの環境でも同じような症状は出ているのでしょうか?
2.なんとか解決策はないでしょうか?
どうかよろしくお願いいたします。
ちょっと違うかもしれませんけど、
うちではTOpenDialog(またはPromptForFileName)を使っているソフトをデバッグし、
ダイアログの中で右クリックメニューを表示しようとすると、
必ずとまりますね。
(とまるといっても、うちではCPUモニタが出るだけで、F5(VSキーマップなので)を何度か押せば元に戻るものですけど)
わたしは、これはOS(またはシェル拡張ソフト)の機能の何かと、Delphiのデバッグ機能が何か不都合を起こしてるんじゃないかと思ってます。
解決策というのは、とくないと思いますけど、
設定のデバッガオプションで、"統合開発環境を使う"のチェックをはずすと、
デバッガが起動しなくなります。
それをすれば、起動しても、単独のEXEと同じ扱いになるので、
何の問題もなくなると思いますけど。
後はもしかしたら、ファイルを開くダイアログにつけている拡張ソフト(ContextViewerなど)があったら、
それを使わないようにすると、解決するかもしれません。
まあ、使わないようにすると、普通に使うのに支障が出ると思うので、
上をお勧めします。
ところでついでに質問してしまいますけど、
うちの環境では(Delphi6Personal WindowsXPSP1)、しばらくDelphiを使っていると、
コード補完機能が正常に動かなくなって、たびたび、
"リストのインデックスが..."というよくあるエラーが起こるようになるんですけど、
そういうことは、そちらの環境ではないでしょうか?
ずっと『Delphiの開発環境のバグ』と思ってたんですけど、ちょっと気になるので…。
WindowsXPは、たしかDelphi6より後にできたと思いますから、
そちらで起こってなかったとしたら、XPと相性が悪い(=Delphi7ではなおってる?)だけということになるので…。
ツイート | ![]() |