Bestimmt eine oder mehrere Anweisungen, die ausgeführt werden sollen, wenn ein Ausdruck True ergibt.
If (Ausdruck)
{
Anweisungen
}
Eine If-Anweisung mit Ausdruck unterscheidet sich von einer traditionellen 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 altmodischen if-Muster entspricht, einen Ausdruck enthält. Folgende Schreibweisen werden auch als If (Ausdruck) erkannt:
if (x > 0) and (y > 0)
if InStr(a, b)
not
oder !
beginnen: if !MeineVar
Bekannte Einschränkung: Aus historischen Gründen akzeptiert If (Ausdruck) genau genommen nicht einen reinen Ausdruck, sondern einen numerischen Parameter. if %MeineVar%
beispielsweise ist das gleiche wie if MeineVar
. Um das zu umgehen, muss der Ausdruck immer in runden Klammern gesetzt werden.
Wenn der Ausdruck der If-Anweisung True ergibt (also ein Ergebnis, das weder eine leere Zeichenkette noch 0 ist), wird die Zeile oder der Block darunter ausgeführt. Ansonsten 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 erstellen). Besitzt ein If allerdings nur eine Zeile, können die geschweiften Klammern weggelassen werden. Entsprechende Beispiele finden Sie am unteren Ende dieser Seite.
Das Leerzeichen nach if
ist optional, wenn der Ausdruck mit einer runden Startklammer beginnt, wie z. B. if(Ausdruck)
.
Der One True Brace Style (OTB) kann je nach Bedarf bei If-Anweisungen angewendet werden, die Ausdrücke sind (aber nicht bei traditionellen 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 solchen Anweisungen gibt es noch if Var between Untergrenze and Obergrenze
, um zu überprüfen, ob eine Variable zwischen zwei Werten liegt, und if Var in VergleichListe
, um zu überprüfen, ob der Inhalt einer Variable in einer Liste von Werten vorkommt.
Ausdrücke, Zuweisungsausdruck (:=), if Var in/contains, if Var between, IfInString, Blöcke, Else, While-Schleife
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:
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".