Los tipos enumerados con los valores especificados no tienen TypeInfo, ¿por qué? [duplicar]

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

  •  27-09-2019
  •  | 
  •  

Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

El uso de Delphi 2007 puede escribir el siguiente código:

interface
TTestType = (ttTest1, ttTest2);

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

Esto compila y obras, EnumName contiene 'ttTest1' al final de la función.

Sin embargo, cuando cambio mi TTestType a algo como esto:

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

Mi código de repente no recopilar más. [DCC Error] Test.pas(271): E2134 Type 'TTestType' has no type info

Ahora puede hacer una matriz const de cadena con los nombres de enumeración, pero me parece que esta solución una sucia. Me puede punto cualquiera en la dirección correcta o estoy tratando de hacer algo imposible aquí?

¿Fue útil?

Solución

No veo ninguna diferencia entre los fragmentos, pero supongamos que usted hizo algo así como "Ttype = (x = 1, y = 2);". Que impida la generación de Delphi de RTTInformation. Es una limitación del compilador al menos hasta D2010.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top