Vous voudrez souvent modifier le déroulement de votre script en fonction d'une condition ou d'une série de conditions. Est-ce un nombre plus grand qu'un autre ? Ou, une chaîne contient-elle une certaine valeur ?
Les conditions sont évaluées comme True (Vraie) (Différente de zéro) ou False (Fausse) (Egale à zéro). Les conditions utilisent généralement des opérateurs de comparaison comme ==, <>, >=.
Les instructions de comparaison suivante sont disponibles dans AutoIt:
Ses instructions sont similaires et décident quel code exécuter en fonction des conditions données. Voici un exemple d'une condition If qui fait apparaître un message box suivant la valeur d'une variable.
#include <Constants.au3>
Local $iNumber = -20
If $iNumber > 0 Then
MsgBox($MB_SYSTEMMODAL, "Example", "$iNumber était positif!")
ElseIf $iNumber < 0 Then
MsgBox($MB_SYSTEMMODAL, "Exemple", "$iNumber était négatif!")
Else
MsgBox($MB_SYSTEMMODAL, "Exemple", "$iNumber était zéro.")
EndIf
L'instruction Select est très similaire, mais est généralement utilisée dans des cas ou vous voulez tester un grand nombre de conditions au lieu de lire un grand nombre de blocs de type If/ElseIf. Exemple :
#include <Constants.au3>
Local $iNumber = 30
Select
Case $iNumber > 1 And $iNumber <= 10
MsgBox($MB_SYSTEMMODAL, "Exemple", "$iNumber était plus grand que 1")
Case $iNumber > 10 And $iNumber <= 20
MsgBox($MB_SYSTEMMODAL, "Exemple", "$iNumber était plus grand que 10")
Case $iNumber > 20 And $iNumber <= 30
MsgBox($MB_SYSTEMMODAL, "Exemple", "$iNumber était plus grand que 20")
Case $iNumber > 30 And $iNumber <= 40
MsgBox($MB_SYSTEMMODAL, "Exemple", "$iNumber était plus grand que 30")
Case $iNumber > 40
MsgBox($MB_SYSTEMMODAL, "Exemple", "$iNumber était plus grand que 40")
EndSelect
L'instruction Switch est très similaire à l'instruction Select, mais elle est généralement utilisée dans des situations où la même expression est testée selon différentes valeurs possibles.
Exemple :
#include <Constants.au3>
Local $iNumber = 30
Switch Int($iNumber)
Case 1 To 10
MsgBox($MB_SYSTEMMODAL, "Example", "$iNumber était plus grand que 1")
Case 11 To 20
MsgBox($MB_SYSTEMMODAL, "Example", "$iNumber était plus grand que 10")
Case 21 To 30
MsgBox($MB_SYSTEMMODAL, "Exemple", "$iNumber était plus grand que 20")
Case 31 To 40
MsgBox($MB_SYSTEMMODAL, "Exemple", "$iNumber était plus grand que 30")
Case Else
MsgBox($MB_SYSTEMMODAL, "Exemple", "$iNumber était plus grand que 40 ou au moins égal à 0")
EndSwitch
Dans chacune de ces structures, la première condition qui est vraie provoque l'exécution du groupe d'instructions qu'elle contrôle. Toutes les conditions qui suivent et leurs instructions associées sont ignorées.
Une instruction Ternary peut être utilisée quand il y a un choix binaire simple à faire; il évite la surcharge des structures associées aux autres instructions conditionnelles.
#include <Constants.au3>
MsgBox($MB_SYSTEMMODAL, "Result: 1=1", (1 = 1) ? "True!" : "False!")
MsgBox($MB_SYSTEMMODAL, "Result: 1=2", (1 = 2) ? "True!" : "False!")