有没有办法在D2010中迭代对象的成员变量而不事先知道它们是什么?
答案 0 :(得分:3)
是的,如果您使用的是Delphi 2010或更高版本。您可以使用扩展RTTI来获取有关对象的字段,方法和属性的信息。简单版本:
procedure GetInfo(obj: TObject);
var
context: TRttiContext;
rType: TRttiType;
field: TRttiField;
method: TRttiMethod;
prop: TRttiProperty;
begin
context := TRttiContext.Create;
rType := context.GetType(obj.ClassType);
for field in rType.GetFields do
;//do something here
for method in rType.GetMethods do
;//do something here
for prop in rType.GetProperties do
;//do something here
end;
可以在RTTI
单元中找到必要的对象。
在Delphi的早期版本中,有一些更有限的RTTI可以为您提供有关某些属性和方法的一些信息,但它不能做那么多。