views:

247

answers:

1

Hi all, and sorry for my English. Consider the following:

TFieldType = class
  fValue: string;
end;

TMainClass = class
private
  Ffield: TFieldType;
public
  function GetValue: string;
end;

In TMainClass.GetValue I'm tryin get values of TMainClass fields:

function TMainClass.GetValue;
begin
  vCtx := TRTTIContext.Create;
  vType := vCtx.GetType(Self.ClassInfo);
  for vField in vType.GetFields do
    vField.GetValue(
        //Here's the trouble, because i don't know how to get the instance
    );

May be there are another ways of getting values of fields which are the instances of another classes?

+5  A: 

You have to pass the instance as the a parameter of GetValue like

vField.GetValue(self);

For a better understanding of Rtti read the remarkable articles about RTTI by Robert Love. For this problem specialy this one about Properties and Fields.

Heinz Z.
Thanks a lot, i've read these articles, but it seems not so attentively. Your answer resolvd my problem.
boombastic