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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top