Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get access field in Delphi using RTTI?

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?

like image 421
boombastic Avatar asked Oct 12 '09 07:10

boombastic


1 Answers

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.

like image 178
Heinz Z. Avatar answered Sep 20 '22 22:09

Heinz Z.