如果类型未命名,AFAIK 编译器不会生成 RTTI。例如:T = 整数的数组[0..1,0..1];在这种情况下,可以知道数组的总大小,但不可能知道每个维度的大小。
只有当我使用明确命名的类型时它才有效:T01 = 0..1; T = 整数数组[T01,T01];
我错过了什么?
测试代码:
type
t = array[0..1, 0..1] of Integer;
procedure test;
var
i: PTypeInfo;
d: TArrayTypeData;
begin
i := TypeInfo(t);
assert(i.Kind = tkArray);
d := GetTypeData(i).ArrayData;
end;