2014-05-03 89 views
1

我需要訪問,記錄屬性,並設置/獲取此屬性值。 首先,我想訪問屬性。但我不能。如何訪問記錄屬性?

出了什麼問題? 版本:Delphi XE6。

示例代碼:

type 
    TmyRecord = record 
    private 
    Str : String; 
    public 
    property StrProp :String read Str; 
    end; 


procedure TForm1.Button3Click(Sender: TObject); 
var 
c : TRttiContext; 
t : TRttiType; 
field : TRttiField; 
prop : TRttiProperty; 
begin 
c := TRttiContext.Create; 
try 
    Memo1.Lines.Append('Fields'); 
    for field in c.GetType(TypeInfo(TMyRecord)).GetFields do 
    begin 
    t := field.FieldType; 
    Memo1.Lines.Append('Field:'+field.Name); 
    Memo1.Lines.Append('RttiType:'+t.ClassName); 
    end; 

    Memo1.Lines.Append('Properties'); 
    for prop in c.GetType(TypeInfo(TMyRecord)).GetProperties do 
    begin 
    t := prop.PropertyType; 
    Memo1.Lines.Append('Property:'+prop.Name); 
    Memo1.Lines.Append('RttiType:'+t.ClassName); 
    end; 

finally 
    c.Free 
end; 

end; 
+0

FWIW,無需在TRttiContext上調用Free或甚至需要調用Create –

回答

5

你的問題是,有沒有可用的作爲已經在2009年的報道,但依然不動(QC#78110)記錄屬性RTTI。

編輯:而且在2017年仍然沒有修復(RSP-19303)。