【发布时间】:2016-07-25 09:35:54
【问题描述】:
我想了解向 RTTI 添加方法的原理(我指的是旧的方法,旧的 Delphi 版本(Delphi 2010 之前)或 FPC 支持)。据我所知,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。如果是属性,可以通过
检索它PropInfo := GetPropInfo(...);
TypeInfo := PropInfo^.PropType;
TypeData := GetTypeData(TypeInfo);
我需要类似的东西作为方法。
【问题讨论】:
-
GetPropInfo用于属性而不是方法... -
@whosrdaddy 好的,那我需要它的等价物。最终我想为该方法获取 TTypeData。
-
你需要的是Method Address
-
@DalijaPrasnikar 据我了解Method Adress 返回一个指向对象过程(或类似的东西)的指针。但我需要该方法的 RTTI 结构 TTypeData。