2009-10-12 22 views
5

aşağıdaki düşünün: TMainClass.GetValue yılındaRTTI kullanarak Delphi'de erişim alanına nasıl erişilir?

TFieldType = class 
    fValue: string; 
end; 

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

Ben çalışıyorum olsun TMainClass alanların değerleri:

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

örnekleri olan alanların değerlerini almanın başka yolu vardır olabilir başka sınıflar?

cevap

6

Sen RTTI daha iyi anlamak için

vField.GetValue(self);

gibi GetValue bir parametre olarak örneğini geçmek zorunda Robert Love tarafından remarkable articles about RTTI okundu. Bu sorun için bu konuda yaklaşık Properties and Fields.

+0

Çok teşekkürler, bu makaleleri okudum, ancak çok dikkatli görünmüyor. Cevabınız benim sorunum. – boombastic

İlgili konular