Sprachreferenz - Konditionelle Ausdrücke

Oft ist erwünscht, dass ein Skript abhängig vom Ergebnis einer oder mehrerer Bedingungen unterschiedlich reagiert. Ist eine Zahl größer als eine andere? Beinhaltet ein String einen bestimmten Teil-String?

Bedingungen (Konditionen) werden als True (wahr, non-zero, nicht-null) oder False (falsch, zero, Null) ausgewertet. Bedingungen nutzen im Allgemeinen Vergleichsoperatoren wie z.B. ==, <>, >=.

Folgende konditionelle Ausdrücke sind in AutoIt verfügbar:

Alle diese vier Ausdrücke sind ähnlich und entscheiden welcher Code abhängig von den Bedingungnen ausgeführt wird . Hier im Beispiel eine If-Abfrage, die eine Message Box abhängig vom Wert einer Variable zeigt

@@SyntaxHighlighting@@ #include Local $iNumber = -20 If $iNumber > 0 Then MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war positiv!") ElseIf $iNumber < 0 Then MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war negativ!") Else MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war null.") EndIf @@End@@

 

Eine Select-Abfrage ist sehr ähnlich, aber wird normalerweise nur benutzt, wenn man eine große Anzahl von Bedingungen testen möchten. Diese Abfrage ist meist kürzer als eine entsprechende If/Else-Konstruktion, z.B.:

@@SyntaxHighlighting@@ #include Local $iNumber = 30 Select Case $iNumber > 1 And $iNumber <= 10 MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war größer als 1") Case $iNumber > 10 And $iNumber <= 20 MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war größer als 10") Case $iNumber > 20 And $iNumber <= 30 MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war größer als 20") Case $iNumber > 30 And $iNumber <= 40 MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war größer als 30") Case $iNumber > 40 MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war größer als 40") EndSelect @@End@@

 

Eine Switch-Anweisung ist einer Select-Anweisung recht ähnlich, wird aber meist dann verwendet, wenn man den gleichen Ausdruck gegen viele verschiedene Werte testen will.

@@SyntaxHighlighting@@ #include Local $iNumber = 30 Switch Int($iNumber) Case 1 To 10 MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war größer als 1") Case 11 To 20 MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war größer als 10") Case 21 To 30 MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war größer als20") Case 31 To 40 MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war größer als 30") Case Else MsgBox($MB_SYSTEMMODAL, "Beispiel", "$iNumber war größer als 40 oder kleiner gleich 0") EndSwitch @@End@@

Bei jeder dieser Strukturen wird der erste Ausdruck der wahr ist dessen Befehle ausgeführt. Alle folgenden Bedingungen und deren zugehörigen Befehle werden ignoriert.

 

Eine Ternary-Anweisung kann verwendet werden, wess es eine einfache binäre Wahl geben soll. Dies vermeidet unnötige Skriptzeilen die bei den anderen obigen Anweisungen notwendig sind.

@@SyntaxHighlighting@@ #include MsgBox($MB_SYSTEMMODAL, "Ergebnis: 1=1", (1 = 1) ? "True!" : "False!") MsgBox($MB_SYSTEMMODAL, "Ergebnis: 1=2", (1 = 2) ? "True!" : "False!") @@End@@