Я пытаюсь использовать общие записи с RTTI, но столкнулся с проблемой с информацией о типе. Кто-нибудь знает, почему следующее не будет компилироваться с использованием Delphi 2010?Delphi TypeInfo для общих записей
program GenericTypeInfo;
{$APPTYPE CONSOLE}
uses
TypInfo,
SysUtils;
type
TMyRec<T> = record
public
Value: T;
end;
TMyInt = TMyRec<Integer>;
TMyString = TMyRec<String>;
begin
try
Writeln(GetTypeName(TypeInfo(TMyRec<Integer>))); <--- This works fine
Writeln(GetTypeName(TypeInfo(TMyRec<String>))); <--- so does this
Writeln(GetTypeName(TypeInfo(TMyInt))); <--- BUT this won't compile
Writeln(GetTypeName(TypeInfo(TMyString))); <--- nor this!!
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
Readln;
end.
линии указанные выше генерировать следующие ошибки компилятора:
[DCC Error] GenericTypeInfo.dpr(24): E2134 Type 'TMyInt' has no type info
[DCC Error] GenericTypeInfo.dpr(24): E2134 Type 'TMyString' has no type info
Я не могу, что большая разница между 2? Я признаю, что я не эксперт на низком уровне, но почему компилятор относится к этому по-другому? Мне нужно, чтобы он работал для типов TMyInt и TMyString.
Спасибо за любую помощь.
Содержит ли компилятор сообщение об ошибке –
Да, конечно, извините, что я должен был включить это в свой пост: [DCC Error] GenericTypeInfo.dpr (24): E2134 Тип 'TMyInt' не имеет информации о типе –
Когда дело доходит до Generics , Поколение RTTI все еще не завершено на 100%. –