Перечисленные типы с указанными значениями не имеют типинфо, почему? [Дубликат

StackOverflow https://stackoverflow.com/questions/3054444

  •  27-09-2019
  •  | 
  •  

Вопрос

Этот вопрос уже имеет ответ здесь:

Использование 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top