Ich habe ein XML-Schema, das Aufzählungen verwendet, aber wenn ich das generierte XML-Objekt in Delphi anschaue, wurde die Aufzählungsbeschränkung verworfen. Gibt es eine Möglichkeit, Delphi dazu zu bringen, das Enum zu generieren und es in das Objekt zu integrieren?Verwenden von XML-Enumerationen mit dem XML-Datenbindungsassistenten von Delphi
XSD Snippet:
<xs:simpleType name="enumType" final="restriction">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Each"/>
<xs:enumeration value="Units"/>
<xs:enumeration value="Area"/>
<xs:enumeration value="Payroll"/>
<xs:enumeration value="Sales"/>
<xs:enumeration value="TotalCost"/>
<xs:enumeration value="Other"/>
</xs:restriction>
</xs:simpleType>
Was würde ich erwarten, in Delphi zu sehen, ist ein Feld, das eine Enum akzeptiert, die dann in dieses umgewandelt wird ist corresponing Zeichenfolge, wenn die XML generiert wird, aber das Feld ist nur ein gewöhnlicher Zeichenfolge.
gehen könnte Wenn Sie eine Aufzählung wie TMyEnum = haben (meFirst, meSecond, meThird), Sie können den ordinalen (numerischen) Wert mit EnumValue erhalten: = TMyEnum (GetEnumValue (typeinfo (TMyEnum), 'meFirst')); // Ergebnis wird meFirst sein. Andersherum: Ergebnis: = Kopieren (GetEnumName (typeinfo (TMyEnum), Ord (meSecond)), 3, MaxInt) liefert die Zeichenkette 'Second'. Ein Hinweis: Wenn GetEnumValue -1 zurückgibt, wenn der Wert nicht gefunden wird, können Sie einen zusätzlichen Test für das Ergebnis hinzufügen, anstatt es direkt auf Ihren Aufzählungstyp zu werfen. Viel Glück! –
Das ist ziemlich cool, danke – LostNomad311