ユニットの初期化セクションは通常、スピードの問題ではありません(データベース関連のものがない限り)。
遅くなる可能性があるのは、リソースからのTFormロードです。 - 「プロジェクト」メニューから「オプション」を選択してから、「フォーム」タブを選択してください。 - TFormをオンザフライで作成することが常に必要です。 - 左のリストの必須ではないフォームをすべて、右の「使用可能な」リストに置きます。 - 要求に応じて、いくつかのコードでフォームを作成します。
ユニットは同じまま:
type
TOneForm = class(TForm)
....
end;
var
OneForm: TOneForm;
しかし、あなたは、リクエストに応じてフォームを作成するには、次のコードを使用することができます。
あなたの元
OneForm.ShowModal;
は、この種のを使用しての代わりにコード
if OneForm=nil then
OneForm := TOneForm.Create(Application);
OneForm.ShowModal;
アプリケーションの読み込みがはるかに高速になります。
注: フォームロード前に問題が発生していることを読みました。 このような問題は、上記の方法ではうまくいきません。 私は他人に役立つかもしれないので、私は答えを保持しています。 次回はよく読んでいきます。 :
初期化から多くのコードを実行することは良い設計ではありません リバクタリングは多くのグローバルオブジェクトや変数のように聞こえます。:)
どのコード行でWindowsCodec.dllが呼び出されるのを確認できますか? – LaBracca
それは難しいかもしれません。あなたができることはDelphi Modulesウィンドウにあり、WindowsCodec.dllのロード時にブレークポイントを設定し、ブレークポイント中にスタックを監視します。 –
最後に、AQTime Profilerの試用版をダウンロードしました。この問題はサードパーティのライブラリ初期化コードにあることがわかりました。 – LaBracca