2009-10-12 16 views
5

Rozważmy następujący:Jak uzyskać dostęp do pola w Delphi za pomocą RTTI?

TFieldType = class 
    fValue: string; 
end; 

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

W TMainClass.GetValue Próbuję uzyskać wartości TMainClass dziedzinach:

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 
    ); 

Może istnieje inny sposób na uzyskanie wartości pól, które są przypadki kolejne zajęcia?

Odpowiedz

6

musiał przejść instancję jako parametr getValue jak

vField.GetValue(self);

Dla lepszego zrozumienia RTTI przeczytać remarkable articles about RTTI Robert Love. W tym problemie szczególnie ten o Properties and Fields.

+0

Wielkie dzięki, przeczytałem te artykuły, ale nie wydaje mi się to zbyt uważnie. Twoja odpowiedź rozwiązuje mój problem. – boombastic