我想获取记录字段的类型,以创建正确的比较器(作为任何/几乎任何记录类型的通用解决方案)。 我找不到静态数组的类型信息:
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等?