我正在使用此代码来获取数组的元素类型
{$APPTYPE CONSOLE}
uses
Rtti,
SysUtils;
type
TFooArray= array of TDateTime;
Var
T : TRttiType;
begin
try
T:=TRttiContext.Create.GetType(TypeInfo(TFooArray));
Writeln(TRttiArrayType(T).ElementType.Name);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
但是应用程序因此行上的访问冲突而失败
Writeln(TRttiArrayType(T).ElementType.Name);
如何使用RTTI获取数组的元素类型?
答案 0 :(得分:11)
你投射错误TRttiArrayType
是静态数组(并且你的数组是动态的),修复问题使用TRttiDynamicArrayType
代替如下:
Writeln(TRttiDynamicArrayType(T).ElementType.Name);