If (Ausdruck)

Bestimmt eine oder mehrere Anweisungen, die ausgeführt werden, wenn die Auswertung eines Ausdrucks True ergibt.

If (Ausdruck)
{
    Anweisungen
}

Bemerkungen

Eine If-Anweisung mit Ausdruck unterscheidet sich von einer Legacy-If-Anweisung wie if GefundeneFarbe != Blau in der Regel dadurch, dass der Ausdruck von runden Klammern umschlossen ist, wie z.B. if (GefundeneFarbe != "Blau"). Allerdings sind diese Klammern nicht immer erforderlich, da davon ausgegangen wird, dass eine If-Anweisung, die keinem Legacy-If-Muster entspricht, einen Ausdruck enthält. Die folgenden Schreibweisen werden ebenfalls als If (Ausdruck) erkannt:

Bekannte Einschränkung: Aus historischen Gründen akzeptiert If (Ausdruck) eigentlich einen numerischen Parameter, keinen reinen Ausdruck. Zum Beispiel ist if %MeineVar% äquivalent zu if MeineVar. Dies lässt sich vermeiden, indem man den Ausdruck immer mit runden Klammern umschließt.

Wenn die Auswertung des Ausdrucks der If-Anweisung True ergibt (also ein Ergebnis, das weder eine leere Zeichenkette noch die Zahl 0 ist), wird die Zeile oder der Block darunter ausgeführt. Andernfalls wird, wenn es ein entsprechendes Else gibt, die Ausführung auf die Zeile oder den Block darunter springen.

Wenn ein If mehr als eine Zeile besitzt, müssen diese Zeilen mit geschweiften Klammern umschlossen werden (um einen Block zu bilden). Besitzt ein If allerdings nur eine Zeile, können die geschweiften Klammern weggelassen werden. Beispiele finden Sie am Ende dieser Seite.

Das Leerzeichen nach if ist optional, wenn der Ausdruck mit einer runden Startklammer beginnt, wie z.B. if(Ausdruck).

Je nach Bedarf kann der One True Brace (OTB) Style bei If-Anweisungen, die Ausdrücke sind, verwendet werden (aber nicht bei Legacy-If-Anweisungen). Zum Beispiel:

if (x < y) {
    ; ...
}
if WinExist("Unbenannt - Editor") {
    WinActivate
}
if IstFertig {
    ; ...
} else {
    ; ...
}

Im Gegensatz zur If-Anweisung unterstützt eine Else-Anweisung unmittelbar auf der rechten Seite eine Anweisung beliebiger Art.

Neben diesen Anweisungen gibt es noch If Var [not] between Min and Max, um zu prüfen, ob eine Variable zwischen zwei Werten liegt, und If Var [not] in/contains VergleichListe, um zu prüfen, ob der Inhalt einer Variable in einer Liste von Werten vorkommt.

Ausdrücke, Ausdruckszuweisung (:=), If Var [not] in/contains VergleichListe, If Var [not] between Min and Max, IfInString, Blöcke, Else, While-Schleife

Beispiele

Wenn A_Index größer als 100 ist, kehre via Return zurück.

if (A_Index > 100)
    return

Wenn das Ergebnis von A_TickCount - StartTime größer als das Ergebnis von 2*MaxTime + 100 ist, zeige "Zu viel Zeit verstrichen." und terminiere das Skript.

if (A_TickCount - StartZeit > 2*MaxZeit + 100)
{
    MsgBox Zu viel Zeit verstrichen.
    ExitApp
}

Dieses Beispiel wird wie folgt ausgeführt:

  1. Wenn Farbe das Wort "Blau" oder "Weiß" ist:
    1. Zeige "Die Farbe ist einer der erlaubten Werte.".
    2. Terminiere das Skript.
  2. Andernfalls, wenn Farbe das Wort "Silber" ist:
    1. Zeige "Silber ist keine erlaubte Farbe.".
    2. Stoppe weitere Überprüfungen.
  3. Andernfalls:
    1. Zeige "Diese Farbe wurde nicht erkannt.".
    2. Terminiere das Skript.
if (Farbe = "Blau" or Farbe = "Weiß")
{
    MsgBox Die Farbe ist einer der erlaubten Werte.
    ExitApp
}
else if (Farbe = "Silber")
{
    MsgBox Silber ist keine erlaubte Farbe.
    return
}
else
{
    MsgBox Diese Farbe wurde nicht erkannt.
    ExitApp
}

Eine einzelne Mehrfachanweisungszeile muss nicht mit geschweiften Klammern umschlossen werden.

MeineVar := 3
if (MeineVar > 2)
    MeineVar++, MeineVar := MeineVar - 4, MeineVar .= " test"
MsgBox % MeineVar  ; Meldet "0 test".