【发布时间】:2019-08-28 15:46:24
【问题描述】:
据我所知,自 Delphi 2010 以来,我不仅可以在已发布的内容上使用 RTTI,还可以在公共财产上使用 RTTI。我有一个旧的 Delphi 7 代码,它也可以在 XE7 下工作,但我仍然无法访问公共属性。
代码如下:
uses
System.TypInfo;
procedure TForm1.GetPublicProp;
var
AColumn: TcxGridDBColumn;
APropInfo: PPropInfo;
begin
AColumn := MycxGridDBTableView.Columns[0];
APropInfo := GetPropInfo(AColumn, 'Index');
if (APropInfo = nil) then
showmessage('not found');
end;
(TcxGridDBColumn 是 TcxGrid > DevExpress 组件中的一列)
显然我错过了一些东西,或者我完全误解了 RTTI 在 XE 下的工作方式,并且仍然无法访问公共属性?
【问题讨论】:
-
您需要增强的 RTTI。您可以在 System.RTTI 单元(或 Delphi 2010 中的 RTTI)中找到它
-
啊,新功能,不是旧功能被改写了。我去看看,谢谢!
-
如果您需要,TypInfo 单元中的代码仍然可以正常工作。
-
不,它没有,使用上面的示例找不到任何公共财产。