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