6

コンポーネント登録 (コンポーネント自体は実行時) といくつかの IDE メニュー項目を含むデザイン パッケージを作成しました。

プロジェクト マネージャーのコンテキスト メニューで [インストール] メニュー項目をクリックすると、パッケージが読み込まれ、正常に (常に) 動作します。

IDE を閉じて再起動すると、パッケージ読み込まれる場合と読み込まれない場合があります。ランダムに見えます。しかし、それは通常、ロードするよりもロードしません。

コンポーネント/パッケージのインストールに移動すると、リストにパッケージが表示され、チェックボックスがオンになり、[コンポーネント] ボタンにパッケージ内のコンポーネントが表示されますが、パッケージの実行可能ファイル自体が IDE に読み込まれていません! (これは Process Explorer で確認しました)。再インストール (パッケージの削除 -> OK -> コンポーネント/パッケージのインストール -> 追加 -> OK) は役に立ちません。ただし、プロジェクト マネージャーのプロジェクトのコンテキスト メニューからアンインストール/インストールすると、常に役立ちます。

パッケージ内の各モジュールの初期化セクションに OutputDebugString を追加しました。そして、初期化セクションが実行されないことがわかりました。

実行時パッケージは、設計時パッケージと同じフォルダーにあります。フォルダーは PATH 環境変数にあります。また、Delphi の Bin フォルダーにパッケージを配置しようとしました。エラー メッセージはありません。奇妙な/診断的な OutputDebugStrings はありません。

何か案は?

PS私は2つの異なるマシンでこの動作をしています。1 つは Win7、もう 1 つは WinXP SP 2 です。

PPS Delphi 7 でこの動作を再現できませんでした。同じパッケージで、常に D7 ロード用に再コンパイルされます。

4

1 に答える 1

9

新しい Delphi には、パッケージの読み込みを遅らせる機能があることがわかりました。これにより、パッケージがロードされていないとき、パッケージが必要でないときの起動速度が最適化されます。

これは、コンポーネント パッケージでは問題なく機能しますが、(たとえば) IDE メニューを変更するパッケージの楽しみを台無しにします。

Registerプロシージャから ForceDemandLoadState(dlDisable) を呼び出して、常にパッケージをロードするように IDE に指示できます。

PS 質問を投稿した直後に、いつも自分で答えを見つけるのはなぜですか? :D

于 2010-10-20T12:16:56.363 に答える