迭代成员变量

Joh*_*ane 6 delphi variables loops member delphi-2010

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

Mas*_*ler 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;
Run Code Online (Sandbox Code Playgroud)

可以在单元中找到必要的对象RTTI

在 Delphi 的早期版本中,有一些更有限的 RTTI 可以为您提供有关某些属性和方法的一些信息,但它不能做那么多事情。