Как я могу получить тип элемента массива, используя 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 ответ

Решение

Вы бросили неправильно TRttiArrayType для статических массивов (а ваш массив динамический), чтобы решить проблему, используйте TRttiDynamicArrayType вместо этого так:

 Writeln(TRttiDynamicArrayType(T).ElementType.Name);
Другие вопросы по тегам