Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: wie wird aus einem Mapping '_1', '1' ein '1' bei der Antwort bzw. wie lese es au

  Alt 31. Mai 2017, 13:45
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 Delphi-Referenz durchsuchenGetEnumName und Delphi-Referenz durchsuchenGetEnumValue (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
...
$2B or not $2B

Geändert von himitsu (31. Mai 2017 um 13:50 Uhr)
  Mit Zitat antworten Zitat