2009-10-12 7 views
5

Considérez ce qui suit:Comment obtenir un champ d'accès dans Delphi en utilisant RTTI?

TFieldType = class 
    fValue: string; 
end; 

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

En TMainClass.GetValue je suis tryin obtenir des valeurs de champs TMainClass:

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

Peut être il y a une autre façon d'obtenir des valeurs de champs qui sont les instances de une autre classe?

Répondre

6

Vous devez passer l'instance comme un paramètre de GetValue comme

vField.GetValue(self);

Pour une meilleure compréhension de RTTI lire le remarkable articles about RTTI par Robert Amour. Pour ce problème specialy celui-ci environ Properties and Fields.

+0

Merci beaucoup, j'ai lu ces articles, mais il semble pas si attentivement. Votre réponse résout mon problème. – boombastic

Questions connexes