无法通过新RTTI播放索引属性[D2010]

时间:2009-11-06 04:22:44

标签: delphi delphi-2010 rtti

  ShowMessage(TRttiContext.Create.GetType(TStringList)
    .GetProperty('Strings').ToString);

上面的代码失败,因为.GetProperty在“Strings”,“Objects”,“Values”(带索引器的那些)等属性上返回nil。我认为这是一个已知的限制,问题是是否有任何方法可以访问这些索引属性(最好不要回退到旧的RTTI工具)。

2 个答案:

答案 0 :(得分:2)

索引属性没有RTTI,但底层字段有。所以你可以直接通过RTTI访问TStringList.FList。但要小心,因为这涉及到原始指针,并确保不要超出Count属性。你可以和其他班级做类似的事情。

答案 1 :(得分:1)

RTTI存在差距。索引属性是一个。

但是当你没有获得属性名称时,为什么要尝试访问它们? ;-)如果您知道有这样的属性,您可以尝试使用强制转换。

您没有获得typ

的方法参数的RTTI

procedure MyProc(const AParam: array of AType)

也。

任何了解更多元素的人都无法获得RTTI?