【问题标题】:Delphi: Which methods are supposed to be in RTTI?Delphi:哪些方法应该在 RTTI 中?
【发布时间】: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);

我需要类似的东西作为方法。

【问题讨论】:

标签: delphi delphi-7 rtti fpc


【解决方案1】:

看看mORMot Framework。它包括一大堆额外的 RTTI 辅助函数,包括非常方便的 TMethodInfo 对象以及这个方便的填充它的函数。

/// retrieve a method RTTI information for a specific class
function InternalMethodInfo(aClassType: TClass; const aMethodName: ShortString): PMethodInfo;

【讨论】:

    猜你喜欢
    • 2011-05-18
    • 2017-02-09
    • 1970-01-01
    • 2017-12-11
    • 2016-02-15
    • 2019-03-17
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多