Delphi相談室その5
■ このスレッドは過去ログ倉庫に格納されています
0093無責任だが
NGNG>コンストラクタの実行中に例外が生成された場合,Destroy デストラクタが
>自動的に呼び出されて未完成のオブジェクトが廃棄されます。
とあります。では、例外を使わずに、自前で解放する方法は無いかという事ですが
残念ながら良い方法はありません。
コンストラクタ内で free してしまっても
帰り値はfreeする前に一時的に生成されたアドレスが帰ってしまいます。
ではそれを無理やりnilにする方法は無いかという事になります。
例えば self:=0; としてしまうとどうでしょう?
そうすると、AfterConstructionという仮想関数の呼び出しが失敗します
無理やりの方法として調べた範囲内では
procedure AfterConstruction;override;
とコンストラクタ呼び出し後の処理を継承して、この中でfreeした上で
asm
mov esi,0
end;
とやれば、なんとか誤魔化せそうですが・・・・・ とりあえず例外使いましょう
例外でIDEが止まるの嫌なら Abortを使うとよいでしょう
■ このスレッドは過去ログ倉庫に格納されています