Binding Mam schematu XML, który używa wyliczeń, ale kiedy patrzę na wygenerowanego obiektu XML w Delphi, ograniczenie wyliczenie zostało upuszczone. Czy istnieje sposób, aby Delphi wygenerował enum i zbudował go na obiekcie?Korzystanie Wyliczenia Delphi XML z danych XML Kreatora
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>
co by się spodziewać, aby zobaczyć w Delphi jest dziedziną, która akceptuje enum, który jest następnie przekształcany To corresponing ciąg gdy XML jest generowany, ale to pole jest tylko zwykłym strunowy.
Jeśli masz wyliczenie jak TMyEnum = (MeFirst, meSecond, meThird), można uzyskać porządkowa wartość (numeryczna) używając EnumValue: = TMyEnum (GetEnumValue (typeinfo (TMyEnum), 'MeFirst')); // wynikiem będzie meFirst. Na odwrót: Wynik: = Copy (GetEnumName (typeinfo (TMyEnum) Ord (meSecond)), 3, MaxInt) przyniesie ciąg 'drugi'. Jedna uwaga: jeśli GetEnumValue zwróci wartość -1, jeśli nie znaleziono, więc można dodać dodatkowy test na skutek zamiast rzucania go bezpośrednio do typu wyliczenia. Powodzenia! –
To dość chłodne, dzięki – LostNomad311