Schlüsselwortreferenz


Enum

Beschreibung anzeigen in

Zählt Konstanten auf.

[scope] Enum [Step <stepval>] <constantlist>

Parameter

scope [optional] Der Bereich in dem die Aufzählung platziert werden soll. Entweder Local, Global, Dim oder nichts. Falls nichts, wird Dim verwendet.
stepval [optional] Der Standardschritt ist 1 zu addieren. Andere mögliche Schrittmethoden sind: *n, +n, -n wobei n eine ganze Zahl ist.
constantlist Die Konstantenliste, die hochgezählt werden soll.

Bemerkungen

Standardmäßig ist die erste Konstante 0 und der Rest wird um 1 erhöht.
Wenn der Multiplikationsoperator als Schritt verwendet wird, wird der ersten Konstante 1 zugewiesen und der Rest wird mit dem vorherigen Konstantenwert multipliziert.
Konstanten können explizit aus einer gültigen Anweisung bestimmt werden.

Zähler können als einfach zu lesende Indexwerte für ein Array verwendet werden - siehe Beispiel 2 unten.

Beispiel

Beispiel 1

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Diese Variablen sind konstant im Bereich von 0 bis 2.
    Local Enum $eVar1, $eVar2, $eVar3
    MsgBox($MB_SYSTEMMODAL, "", "$eVar1 ist gleich wie (0): " & $eVar1 & @CRLF & _
            "$eVar2 ist gleich wie (1): " & $eVar2 & @CRLF & _
            "$eVar3 ist gleich wie (2): " & $eVar3 & @CRLF)

    ; Diese Variablen sind konstant im Bereich von 1 bis 2. $eVariant3 wird auf 5 gesetzt und ab dort fortgesetzt mit dem Inkrement von 1.
    Local Enum $eVariant1 = 1, $eVariant2, $eVariant3 = 5, $eVariant4
    MsgBox($MB_SYSTEMMODAL, "", "$eVariant1 ist gleich wie (1): " & $eVariant1 & @CRLF & _
            "$eVariant2 ist gleich wie (2): " & $eVariant2 & @CRLF & _
            "$eVariant3 ist gleich wie (5): " & $eVariant3 & @CRLF & _
            "$eVariant3 ist gleich wie (6): " & $eVariant4 & @CRLF)

    ; Das Mehrfache von jeder Aufzählung von 2.
    Local Enum Step *2 $eFoo1, $eFoo2, $eFoo3, $eFoo4
    MsgBox($MB_SYSTEMMODAL, "", "$eFoo1 ist gleich wie (1): " & $eFoo1 & @CRLF & _
            "$eFoo2 ist gleich wie (2): " & $eFoo2 & @CRLF & _
            "$eFoo3 ist gleich wie (4): " & $eFoo3 & @CRLF & _
            "$eFoo3 ist gleich wie (8): " & $eFoo4 & @CRLF)
EndFunc   ;==>Example

Beispiel 2

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Erstellt Variablen im lokalen Bereich und führt eine Aufzählung durch die Variablen. Standardmäßig wird bei 0 begonnen.
    Local Enum $eCat, $eDog, $eMouse, $eHamster ; $eHamster ist gleich dem Wert 3, nicht 4.

    ; Erstellt ein Array im lokalen Bereich mit 4 Elementen.
    Local $aAnimalNames[4]

    ; Weist jedem Array-Element den Namen des jeweiligen Tieres zu. Zum Beispiel heißt die Katze Jasper.
    $aAnimalNames[$eCat] = 'Jasper' ; $eCat ist gleich dem Wert 0, ähnlich wie bei der Verwendung von $aAnimalNames[0]
    $aAnimalNames[$eDog] = 'Beethoven' ; $eDog ist gleich dem Wert 1, ähnlich wie bei der Verwendung von $aAnimalNames[1]
    $aAnimalNames[$eMouse] = 'Pinky' ; $eMouse ist gleich dem Wert 2, ähnlich wie bei der Verwendung von $aAnimalNames[2]
    $aAnimalNames[$eHamster] = 'Fidget' ; $eHamster ist gleich dem Wert 3, ähnlich wie bei der Verwendung von $aAnimalNames[3]

    ; Zeigt die Werte des Arrays an.
    MsgBox($MB_SYSTEMMODAL, '', '$aAnimalNames[$eCat] = ' & $aAnimalNames[$eCat] & @CRLF & _
            '$aAnimalNames[$eDog] = ' & $aAnimalNames[$eDog] & @CRLF & _
            '$aAnimalNames[$eMouse] = ' & $aAnimalNames[$eMouse] & @CRLF & _
            '$aAnimalNames[$eHamster] = ' & $aAnimalNames[$eHamster] & @CRLF)

    ; Manchmal ist die Verwendung dieses Ansatzes für den Zugriff auf ein Element praktischer als die Verwendung eines nummerischen Werts,
    ; da die Änderung des Indexwerts der Enum-Konstante keinen Einfluss auf die Position im Array hat. Daher ist das Ändern der Position
    ; von $eCat im Array so einfach wie das Ändern der Reihenfolge, die in der ursprünglichen Deklaration angezeigt wird, z.B.

    ; Local Enum $eDog, $eMouse, $eCat, $eHamster

    ; Jetzt ist $eCat das 3. Element im Array. Wenn Sie nummerische Werte verwenden würden, müssten Sie alle Referenzen von $aAnimalNames[0]
    ; in $aAnimalNames[2] sowie für die anderen Elemente, die jetzt verschoben wurden, manuell ändern.
EndFunc   ;==>Example