Tipos enumerados com valores especificados não têm tipoInfo, por quê? [duplicado

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

  •  27-09-2019
  •  | 
  •  

Pergunta

Esta pergunta já tem uma resposta aqui:

Usando Delphi 2007, posso escrever o seguinte código:

interface
TTestType = (ttTest1, ttTest2);

procedure enumName;
var
  EnumName: String;
begin
  EnumName := GetEnumName(TypeInfo(TTestType), Ord(ttTest1));
end;

Isso compila e funciona, o Enumname contém 'tttest1' no final da função.

No entanto, quando eu mudo meu ttesttype para algo assim:

interface
TTestType = (ttTest1=1, ttTest2=2);

Meu código de repente não vai mais compilar. [DCC Error] Test.pas(271): E2134 Type 'TTestType' has no type info

Agora eu posso fazer uma matriz const de string com os nomes de enum, mas acho isso uma solução suja. Alguém pode me apontar na direção certa ou estou tentando algo impossível aqui?

Foi útil?

Solução

Não vejo diferença entre os trechos, mas assuma que você fez algo como "ttype = (x = 1, y = 2);". Isso impediria que a Delphi gerasse RTTInformation. É uma limitação do compilador pelo menos até o D2010.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top