Перечисленные типы с указанными значениями не имеют типинфо, почему? [Дубликат
Вопрос
Этот вопрос уже имеет ответ здесь:
Использование Delphi 2007 Я могу написать следующий код:
interface
TTestType = (ttTest1, ttTest2);
procedure enumName;
var
EnumName: String;
begin
EnumName := GetEnumName(TypeInfo(TTestType), Ord(ttTest1));
end;
Это компилирование и работы, энун содержит «TTTEST1» в конце функции.
Однако, когда я меняю свой TTESTTYPE к чему-то вроде этого:
interface
TTestType = (ttTest1=1, ttTest2=2);
Мой код вдруг не будет компитен. [DCC Error] Test.pas(271): E2134 Type 'TTestType' has no type info
Теперь я могу сделать Const Array of String с именами Enum, но я нахожу это грязное решение. Кто-нибудь может указать мне в правильном направлении или я здесь пробую что-то невозможное?
Решение
Я не вижу никакой разницы между фрагментами, но предполагает, что вы сделали что-то вроде «Ttype = (x = 1, y = 2);". Это будет препятствовать Delphi из генерации RTTInformation. Это ограничение компилятора, по крайней мере до D2010.