私は関数を持っています(Delphi 7、32ビットで書かれています):
関数GetVMTAddr(var C):整数;
始める
結果:= Integer(C);
試す
PVmt(Result)^。SelfPtr:= PVmt(C)^。SelfPtr;
それ外
結果:= 0;
終わり;
終わり;
これはVMTアドレスを返し(VMTだと思いますが、よくわかりません)、パラメーターがオブジェクトであるかどうかをチェックします(try...exceptこれは、非常に貧弱なソリューションです)。
2つの質問があります:
1)これは本当にVMTアドレスですか、それとも間違っていますか?
2)パラメータがオブジェクトであることを確認するためのより良い解決策はありますか?