types dénombrées avec les valeurs spécifiées ne sont pas appartenue, pourquoi? [dupliquer]
Question
Cette question a déjà une réponse ici:
Utilisation de Delphi 2007 Je peux écrire le code suivant:
interface
TTestType = (ttTest1, ttTest2);
procedure enumName;
var
EnumName: String;
begin
EnumName := GetEnumName(TypeInfo(TTestType), Ord(ttTest1));
end;
Cette compile et œuvres, EnumName contient « ttTest1 » à la fin de la fonction.
Cependant, quand je change mon TTestType à quelque chose comme ceci:
interface
TTestType = (ttTest1=1, ttTest2=2);
Mon code soudain ne compilera pas plus. [DCC Error] Test.pas(271): E2134 Type 'TTestType' has no type info
Maintenant, je peux faire un tableau const de chaîne avec les noms de ENUM, mais je trouve cela une solution sale. point que quelqu'un peut me dans le bon sens ce que je cherche quelque chose d'impossible ici?
La solution
Je ne vois pas de différence entre les extraits, mais supposons que vous avez fait quelque chose comme "ttype = (x = 1, y = 2);". Cela permettrait d'éviter de générer Delphi RTTInformation. Il est une limitation du compilateur au moins jusqu'à D2010.