迭代成员变量

时间:2010-12-17 00:13:07

标签: delphi variables delphi-2010 member loops

有没有办法在D2010中迭代对象的成员变量而不事先知道它们是什么?

1 个答案:

答案 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可以为您提供有关某些属性和方法的一些信息,但它不能做那么多。