Los tipos enumerados con los valores especificados no tienen TypeInfo, ¿por qué? [duplicar]
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í?
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.