如何使用RTTI获取数组的元素类型

时间:2011-12-31 02:36:40

标签: delphi delphi-xe rtti

我正在使用此代码来获取数组的元素类型

{$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获取数组的元素类型?

1 个答案:

答案 0 :(得分:11)

你投射错误TRttiArrayType是静态数组(并且你的数组是动态的),修复问题使用TRttiDynamicArrayType代替如下:

 Writeln(TRttiDynamicArrayType(T).ElementType.Name);