我有一个TValue
包围一套。 TTypedData.CompType
是零。因此,调用TValue.ToString
会引发异常,因为System.TypInfo.SetToString
假设CompType
永远不会为零。
为什么某些集合类型CompType
为零?
TTestEnumType = (tstEnum1 = 1, tstEnum2 = 2, tstEnum3 = 3, tstEnum4 = 4, tstEnum5 = 5, tstEnum6 = 6, tstEnum7 = 7);
TTestEnumTypeSet = set of TTestEnumType;
TTestSetOfByte = set of Byte;
上面我们定义了两种类型:TTestEnumTypeSet
和TTestSetOfByte
。
以下简单测试表明,CompType
的{{1}}为零。
TTestSetOfByte
答案 0 :(得分:4)
具有明确指定的标准的枚举类型没有RTTI。这在documentation:
中说明没有特定值的枚举常量有RTTI:
type SomeEnum = (e1, e2, e3);
而枚举常量具有特定值,例如 以下,没有RTTI:
type SomeEnum = (e1 = 1, e2 = 2, e3 = 3);