Das Mapping kommt erstmal wegen dem ENUM, da "1" kein gültiger Bezeichner ist. (Bezeichner fangen niemals mit Ziffern an)
Und wie willst du die Strings "A" oder "B" in Integer umwandeln?
Gut, du könntest ja einfach den führende "_" entfernen und StrToInt verwenden, aber bei "_A" oder "_B" hilft das auch nicht viel, da das keine Zahlen sind.
Wenn du unbedingt einen Integer willst, dann wandle besser den ENUM um und nicht die Namen der enthaltenen Werte.
Delphi-Quellcode:
var
E: ST_Vertragsstatus;
i: Integer;
E := ST_Vertragsstatus(i);
i := Ord(E);
Alternativ via
RTTI die Werte des ENUM umwandeln lassen, also
GetEnumName und
GetEnumValue (TypInfo.pas), bzw. siehe
RTTI.pas .
ENUMs fangen bei 0 an, also wäre jetzt
Code:
_1 = 0
_2 = 1
...
_9 = 8
_A = 9
...
Aber das liese sich über einen Offset lösen.
Delphi-Quellcode:
E := ST_Vertragsstatus(i - 1);
i := Ord(E) + 1;
Code:
_1 = 1
_2 = 2
...
_9 = 9
_A = 10
...