コードからこれを解決するのは簡単です。のテキスト検索を行うだけですTApplication.Create
。たとえば、IDEのファイル内検索機能を使用します。
しかし、いつでも怠惰になり、デバッガーにそれを実行させることができます。
- デバッグDCUを有効にします。
- にブレークポイントを設定します
TApplication.Create
。
- 走る。
プログラムが壊れたら、コールスタックを見てください。オブジェクトがユニット内TApplication
からインスタンス化されていることがわかります。そして、ユニットのセクションから呼び出されます。InitControls
Controls
InitControls
initialization
Controls
プレーンなバニラVCLアプリの完全なコールスタックは次のようになります。
Vcl.Forms.TApplication.Create(nil)
Vcl.Controls.InitControls
Vcl.Controls.Vcl.Controls
System.InitUnits
System._StartExe(???、???)
SysInit._InitExe($ 5A81BC)
Project1.Project1
:749933aa kernel32.BaseThreadInitThunk + 0x12
:76f09ef2 ntdll.RtlInitializeExceptionChain + 0x63
:76f09ec5 ntdll.RtlInitializeExceptionChain + 0x36
で同じことを行うと、オブジェクトもでインスタンス化されTScreen.Create
ていることがわかります。TScreen
InitControls()
私はこれらすべてを説明しようとはしません。ここからすべてを解決するのに十分な情報とアドバイスがここにあると思います。これはXE3アプリケーションからの呼び出しスタックですが、Delphi5アプリケーションでも同じように見えます。