Frage

    

Diese Frage bereits eine Antwort hier:

         

Mit Delphi 2007 Ich kann den folgenden Code schreiben:

interface
TTestType = (ttTest1, ttTest2);

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

Dies kompiliert und arbeitet, EnumName enthält ‚ttTest1‘ am Ende der Funktion.

Allerdings, wenn ich meine TTestType zu so etwas wie dies zu ändern:

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

Mein Code wird plötzlich nicht mehr kompilieren. [DCC Error] Test.pas(271): E2134 Type 'TTestType' has no type info

Jetzt kann ich ein const Array von String mit dem Enum-Namen machen, aber ich diese einem schmutzige Lösung finden. Kann mir jemand Punkt in die richtige Richtung oder versuche ich, etwas unmöglich hier?

War es hilfreich?

Lösung

Ich sehe keinen Unterschied zwischen den Schnipseln, aber davon ausgehen, dass Sie so etwas wie taten "ttype = (x = 1, y = 2);". Das würde verhindern, dass Delphi von RTTInformation zu erzeugen. Es ist eine Compiler-Einschränkung zumindest bis D2010.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top