tipi enumerati con valori specificati non hanno TypeInfo, perché? [duplicare]
Domanda
Questa domanda ha già una risposta qui:
Utilizzando Delphi 2007 posso scrivere il seguente codice:
interface
TTestType = (ttTest1, ttTest2);
procedure enumName;
var
EnumName: String;
begin
EnumName := GetEnumName(TypeInfo(TTestType), Ord(ttTest1));
end;
Questa compila e opere, EnumName contiene 'ttTest1' alla fine della funzione.
Tuttavia, quando cambio il mio TTestType a qualcosa di simile:
interface
TTestType = (ttTest1=1, ttTest2=2);
Il mio codice improvvisamente non sarà più a compilare. [DCC Error] Test.pas(271): E2134 Type 'TTestType' has no type info
Ora posso fare una serie const di stringa con i nomi enum, ma trovo questa soluzione uno sporco. Qualcuno può punto nella giusta direzione me o sto cercando qualcosa di impossibile qui?
Soluzione
non vedo alcuna differenza tra i frammenti, ma per scontato che hai fatto qualcosa come "ttype = (x = 1, y = 2);". Che impedirebbe Delphi di generare RTTInformation. Si tratta di una limitazione del compilatore almeno fino D2010.