gpt4 book ai didi

delphi - 对于静态数组,使用 RTTI 获取记录字段类型失败

转载 作者:行者123 更新时间:2023-12-03 14:58:40 27 4
gpt4 key购买 nike

我正在尝试获取记录字段的类型,以便创建正确的比较器(作为任何/几乎任何记录类型的通用解决方案)。我找不到静态数组的类型信息:

  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 均为 nil。任何想法这里有什么问题吗?或者也许有更简单的方法来创建与 TArray/TDictionary 等一起使用的记录比较器?

最佳答案

您需要声明一个类型才能使 RTTI 可用。例如:

type
TMyStaticArrayOfByte = array[0..3] of byte;

TArrFieldTest = record
a: string;
b: TMyStaticArrayOfByte;
end;

关于delphi - 对于静态数组,使用 RTTI 获取记录字段类型失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747007/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com