1
RTTIにメソッドを追加するという原則を理解したいと思います(古いDelphiのバージョン(Delphi 2010より前)またはFPCによってサポートされている古いものを意味します)。私が知る限り、RTTIは公開されたメソッドに関する情報を持っているはずです。しかし、次の例は、私の場合には動作しません:Delphi:どのメソッドがRTTIにあるはずですか?
{$M+}
TMyClass = class
published
procedure testfn(a,b,c: Integer);
end;
{$M-}
...
procedure TMyClass.testfn(a,b,c: Integer);
begin
ShowMessage('s');
end;
...
GetPropInfo(TMyClass, 'testfn'); // returns nil
私は方法のためPPropInfoを受け取るために変更する必要があるかを理解したいと思います。
メソッドのPTypeInfoを取得します。プロパティの場合は、
で取得できます。メソッドの場合は、そのようなものが必要です。
[ 'GetPropInfo'(http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/[email protected]@string.html)の特性のためではないために使用されますメソッド... – whosrdaddy
@whosrdaddy大丈夫、私はそれと同等のものが必要です。最終的には、メソッドのTTypeDataを取得したいと思います。 – Int0h
あなたが必要とするのは、[方法アドレス](http://docwiki.embarcadero.com/Libraries/Seattle/en/System.TObject.MethodAddress)です。 –