我想獲取記錄字段的類型以創建正確的比較器(作爲任何/幾乎任何記錄類型的一般解決方案)。我無法找到靜態數組類型信息:使用RTTI獲取記錄字段的類型對於靜態數組失敗
TArrFieldTest = record
a: string;
b: array[0..3] of byte;
end;
procedure Test;
var
rttiContext: TRttiContext;
rttiType: TRttiType;
rttiFields: TArray<TRttiField>;
begin
rttiType := rttiContext.GetType(TypeInfo(TArrFieldTest));
rttiFields := rttiType.GetFields;
Assert(rttiFields[0].FieldType<>nil); // it's ok
Assert(rttiFields[1].FieldType<>nil); // fail here!
end;
的FieldType爲任何類型的靜態陣列爲零。 任何想法這裏有什麼不對? 或者也許有更簡單的方法來創建TArray/TDictionary等使用的記錄比較器?
這同樣適用於ShortString類型(David Heffernan的解決方案也適用於他們)。 –