If

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

If Ausdruck
{
    Anweisungen
}

Bemerkungen

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 verwendet werden. 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.

Ausdrücke, Ternärer Operator (a?b:c), 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".

Ähnlich wie If Var [not] between Min and Max von AutoHotkey v1 prüfen die folgenden Beispiele, ob der Inhalt einer Variable zwischen zwei Werten liegt (numerisch oder alphabetisch).

Prüft, ob var im Bereich von 1 bis 5 liegt:

if (var >= 1 and var <= 5)
    MsgBox var " liegt im Bereich von 1 bis 5."

Prüft, ob var im Bereich von 0.0 bis 1.0 liegt:

if not (var >= 0.0 and var <= 1.0)
    MsgBox var " liegt nicht im Bereich von 0.0 und 1.0."

Prüft, ob var zwischen VarNiedrig und VarHoch liegt:

if (var >= VarNiedrig and var <= VarHoch)
    MsgBox var " liegt zwischen " VarNiedrig " und " VarHoch "."

Prüft, ob var alphabetisch zwischen den Wörtern Blau und Rot liegt:

if (StrCompare(var, "Blau") >= 0) and (StrCompare(var, "Rot") <= 0)
    MsgBox var " liegt alphabetisch zwischen den Wörtern Blau und Rot."

Lässt den Benutzer eine Zahl eingeben und prüft, ob sie im Bereich von 1 bis 10 liegt:

Untergrenze := 1
Obergrenze := 10
IB := InputBox("Bitte eine Zahl zwischen " Untergrenze " und " Obergrenze " eingeben")
if not (IB.Value >= Untergrenze and IB.Value <= Obergrenze)
    MsgBox "Ihre Eingabe liegt außerhalb des gültigen Bereichs."

Ähnlich wie If Var [not] in/contains VergleichListe von AutoHotkey v1 prüfen die folgenden Beispiele, ob der Inhalt einer Variable mit einem der Elemente in einer Liste übereinstimmt.

Prüft, ob var die Dateiendung EXE, BAT oder COM ist:

if (var ~= "i)\A(exe|bat|com)\z")
    MsgBox "Die Dateiendung ist von einer ausführbaren Datei."

Prüft, ob var die Primzahl 1, 2, 3, 5, 7 oder 11 ist:

if (var ~= "\A(1|2|3|5|7|11)\z")
    MsgBox var " ist eine kleine Primzahl."

Prüft, ob var die Ziffer 1 oder 3 enthält:

if (var ~= "1|3")
    MsgBox "var enthält die Ziffer 1 oder 3 (var könnte auch eine 1, 3, 10, 21, 23, etc. sein)"

Prüft, ob var eines der Elemente in MeineElementeListe ist:

; Entkommentiere folgende Zeile, wenn MeineListe RegEx-Zeichen außer | enthält.
; MeineListe := RegExReplace(MeineListe, "[\Q\.*?+[{()^$\E]", "\$0")
if (var ~= "i)\A(" MeineListe ")\z")
    MsgBox var " ist in der Liste."

Lässt den Benutzer eine Zeichenkette eingeben und prüft, ob sie das Wort Ja oder Nein ist:

IB := InputBox("Bitte JA oder NEIN eingeben")
if not (IB.Value ~= "i)\A(ja|nein)\z")
    MsgBox "Ihre Eingabe ist ungültig."

Prüft, ob aktiver_titel "Adressliste.txt" oder "Kundenliste.txt" enthält, und prüft, ob es "metapad" oder "Notepad" enthält:

aktiver_titel := WinGetTitle("A")
if (aktiver_titel ~= "i)Adressliste\.txt|Kundenliste\.txt")
    MsgBox "Eines der gewünschten Fenster ist aktiv."
if not (aktiver_titel ~= "i)metapad|Notepad")
    MsgBox "Aber die Datei ist weder in Metapad noch in Notepad geöffnet."