Miklix

So iterieren Sie über die Elemente einer Enumeration aus X++-Code in Dynamics AX 2012

Veröffentlicht: 15. Februar 2025 um 23:10:04 UTC
Zuletzt aktualisiert: 12. Januar 2026 um 08:41:54 UTC

Dieser Artikel erklärt, wie man die Elemente einer Basis-Enumeration in Dynamics AX 2012 aufzählt und durchläuft, einschließlich eines X++-Codebeispiels.


Diese Seite wurde maschinell aus dem Englischen übersetzt, um sie so vielen Menschen wie möglich zugänglich zu machen. Leider ist die maschinelle Übersetzung noch keine ausgereifte Technologie, so dass Fehler auftreten können. Wenn Sie es vorziehen, können Sie sich die englische Originalversion hier ansehen:

How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012

Die Informationen in diesem Beitrag basieren auf Dynamics AX 2012 R3. Ob sie auch für andere Versionen gelten, ist ungewiss.

Ich habe kürzlich ein Formular erstellt, das für jedes Element einer Aufzählung einen Wert anzeigen sollte. Anstatt die Felder manuell zu erstellen (und das Formular anschließend bei Änderungen der Aufzählung aktualisieren zu müssen), habe ich mich für eine dynamische Implementierung entschieden, sodass die Felder zur Laufzeit automatisch zum Design hinzugefügt werden.

Ich stellte jedoch bald fest, dass das tatsächliche Durchlaufen der Werte in einem Enum zwar recht einfach ist, sobald man weiß, wie es geht, aber doch etwas verwirrend sein kann.

Sie müssen offensichtlich mit der Klasse DictEnum beginnen. Wie Sie sehen werden, verfügt diese Klasse über mehrere Methoden, um Informationen wie Name und Bezeichnung sowohl über Index als auch über Wert zu erhalten.

Der Unterschied zwischen Index und Wert besteht darin, dass der Index die Nummer eines Elements innerhalb des Enums angibt, sofern die Elemente fortlaufend ab null nummeriert sind, während der Wert die eigentliche „Wert“-Eigenschaft des Elements darstellt. Da die meisten Enums fortlaufend ab 0 nummerierte Werte verwenden, sind Index und Wert eines Elements oft identisch, aber nicht immer.

Aber woher weiß man, welche Werte ein Enum hat? Hier wird es kompliziert. Die Klasse `DictEnum` besitzt eine Methode namens `values()`. Man könnte erwarten, dass diese Methode eine Liste der Enum-Werte zurückgibt, aber das wäre natürlich zu einfach. Stattdessen gibt sie die Anzahl der enthaltenen Werte zurück. Diese Anzahl hat jedoch nichts mit den tatsächlichen Werten zu tun. Daher muss man diese Zahl als Grundlage für den Aufruf indexbasierter Methoden verwenden, nicht für wertbasierte.

Wenn sie diese Methode doch nur indexes() genannt hätten, wäre es weniger verwirrend gewesen ;-)

Beachten Sie außerdem, dass Enum-Werte (und anscheinend auch diese „Indizes“) im Gegensatz zu Array- und Container-Indizes in X++ bei 0 beginnen, die bei 1 beginnen. Um die Elemente eines Enums zu durchlaufen, könnten Sie beispielsweise Folgendes tun:

DictEnum dictEnum = new DictEnum(enumNum(SalesStatus));
Counter  c;
;

for (c = 0; c < dictEnum.values(); c++)
{
    info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}

Dadurch werden das Symbol und die Bezeichnung jedes Elements im Enum im Infolog ausgegeben.

Weitere Informationen

Wenn Ihnen dieser Beitrag gefallen hat, könnten Ihnen auch diese Vorschläge gefallen:


Teilen auf BlueskyAuf Facebook teilenAuf LinkedIn teilenAuf Tumblr teilenTeilen auf XAuf LinkedIn teilenPin auf Pinterest

Mikkel Christensen

Über den Autor

Mikkel Christensen
Mikkel ist der Schöpfer und Eigentümer von miklix.com. Er verfügt über mehr als 20 Jahre Erfahrung als professioneller Computerprogrammierer/Softwareentwickler und ist derzeit in Vollzeit für ein großes europäisches IT-Unternehmen tätig. Wenn er nicht gerade bloggt, verbringt er seine Freizeit mit einer Vielzahl von Interessen, Hobbys und Aktivitäten, was sich bis zu einem gewissen Grad in der Vielfalt der auf dieser Website behandelten Themen widerspiegelt.