我想列舉記錄的欄位資訊(名稱、型別……)。RTTI 提供欄位名稱,但型別為 null(nil)!我怎樣才能得到這些資訊?
記錄:
foo = record
bar : array[0..5] of char;
end;
列舉:
for var f : TRttiField in TRTTIContext.Create.GetType(TypeInfo(foo)).GetFields do
begin
OutputDebugString(PWideChar(f.Name ' :: ' f.FieldType.ToString())); ///fieldtype is nil??!
end;
uj5u.com熱心網友回復:
RTTI 系統僅適用于預定義型別。“即時”定義欄位型別不會生成 RTTI 資訊。因此,改為像這樣宣告陣列型別:
type
TChar5Arr = array[0..5] of Char;
foo = record
bar : TChar5Arr;
end;
您將獲得更多資訊:
name: bar
type: TChar5Arr
value: (array) //is not retrieved using GetValue
uj5u.com熱心網友回復:
根據 Delphi 的檔案:
查詢型別資訊
在 Delphi 中,型別資訊只為型別發出,而不是為全域單元例程、常量或變數發出。這意味著獲得的 TRttiContext 只能用于查詢有關宣告型別的資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/481122.html
