1

ActiveX オブジェクト (QlikOCX.ocx) を使用する必要があります。そこで、問題なく動作する非常に小さなサンプル アプリケーションを作成しましたが、アプリケーションを閉じると、次のようなエラーが表示されます。

"application.exe が機能しなくなりました -> オンラインで解決策を検索し、プログラムを閉じます -> プログラムを閉じます

問題の詳細: 問題イベント名: APPCRASH ..."

何らかの方法でこのエラーをキャッチできるかどうか知りたいですか? ありがとうございました!

4

2 に答える 2

2

発生するエラーには多くの原因が考えられます。独自のコードまたはActiveXコントロールに問題がある可能性があります。たとえば、プロセスが終了しても、スレッドの1つがまだ実行中であり、情報などをポーリングしている場合があります。
ActiveXコントロールを正しく解放しない可能性があります。そのため、未完成のビジネスが取り残される可能性があります。デバッガー内でアプリケーションを実行すると、エラーの場所がわかりますが、少し複雑になる可能性があります。時々、sh * tが発生します...
このOCXをテストするための小さなコンソールアプリケーションを作成しましたか?または、それをコンポーネントとしてインポートし、フォームに追加しましたか?
コンソールアプリケーションの場合は、グローバル変数を使用してOCXオブジェクトを格納していないことを確認してください。グローバルインターフェイスオブジェクトは、常に正しくリリースされるとは限りません。
フォームでコンポーネントを使用する場合は、このフォームにOnCloseイベントを追加し、このイベントにOCXコントロールをクリーンアップするコードを追加します。解放しないでください。ただし、「閉じる」、「クリア」、「終了」機能、または呼び出す必要のあるその他のクリーンアップメソッドがあるかどうかを確認してください。また、OCXコントロールのようなインターフェイスベースのタイプにはグローバル変数を使用しないでください。

于 2010-10-13T12:48:01.543 に答える
2

アプリケーションを終了する前に、ActiveX.CoFreeUnusedLibraries を呼び出してみてください。7.1 より前の Delphi を使用している場合は、Quality Central Report#:3272を参照してください。バグがありました。

于 2010-10-13T14:17:59.690 に答える