Une variable est juste un emplacement m�moire o� vous stockez une donn�e de telle sorte qu'elle soit accessible rapidement. Pensez � une bo�te aux lettres dans la m�moire o� vous pouvez placer ou retirer une information. Par exemple, vous pourriez cr�er une variable pour stocker le nombre de r�ponses d'un utilisateur, ou le r�sultat d'une �quation math�matique.
Chaque variable a un nom (comme une boite aux lettres), ce nom doit commencer par le caract�re $ et ne doit contenir que des lettres, des chiffres et le caract�re de soulignement '_' . Voici quelques exemples de noms :
$Var1
$vVariable
$ma_Variable
Notez que tous les noms de variables sont insensibles � la casse: $maVariable est la m�me que $MavARiAblE.
Chaque variable est stock�e comme une information 'variant' .
Les variables sont d�clar�es et cr��es avec les mots cl� Local et Global - Dim peut aussi �tre utilis�, mais ce n'est pas recommand�.
Local $vVariable
Ou bien, vous pouvez d�clarer plusieurs variables simultan�ment:
Global $vVariable1, $vVariable2
Vous pouvez aussi assigner une variable sans la d�clarer auparavant, mais beaucoup pr�f�rent les d�clarations explicites.
$vVariable = "Create and Assign"
Les constantes sont d�clar�es et cr��es en utilisant le mot-cl� Const et doivent �tre initialis�es avec une valeur:
Const $iConst1 = 1, $iConst2 = 12
Les constantes peuvent etre d�clar�es et initialis�es en utilisant le mot cl� Enum
Enum $iConst1 = 1, $iConst2, $iConst3 ; 1, 2, 3
Enum Step 2 $iIncr0, $iIncr2, $iIncr4 ; 0, 2, 4
Enum Step *2 $iMult1, $iMult2, $iMult4 ; 1, 2, 4
Lorsqu'une constante a �t� assign�e, elle ne peut plus �tre modifi�e.
La port�e d'une variable d�pend de l'emplacement et de la fa�on dont vous la d�clarez. Si vous d�clarez une variable au d�but de votre script et en dehors de toute fonction elle existera sur une port�e globale et pourra �tre lue ou modifi�e dans n'importe quelle partie de votre script.
Si vous d�clarez une variable � l'int�rieur d'une fonction elle a une port�e locale et ne peut �tre utilis�e que dans cette m�me fonction. Les variables cr��es dans une fonction sont automatiquement d�truite quand la fonction se termine.
Par d�faut, quand les variables sont d�clar�es en utilisant le mot cl� Dim ou assign�es dans une fonction, elles ont une port�e locale, � moins qu'il n'existe une variable globale du m�me nom (dans ce cas, la variable globale est utilis�e). Ceci peut �tre modifi� en utilisant les mots cl� Local et Global lors de la d�claration des variables pour forcer leur port�e comme vous le souhaitez.
AutoIt a 2 types de variables pour grouper des donn�es: Array and Map.
Les tableaux (Array) sont beaucoup plus rapides pour un acc�s al�atoire et peuvent avoir plusieurs dimensions - une dimension est fix�e lors de la d�claration initiale (mais elle peut �tre modifi�e � l'aide de ReDim). Les tableaux sont index�s en utilisant des valeurs enti�res se r�f�rant � l'ordre des �l�ments et commen�ant � l'�l�ment [0] - les �l�ments peuvent �tre extraits en utilisant l'index entier ou en it�rant avec une simple boucle For ... Next.
Les tables (Map) sont meilleures pour les acc�s de type enregistrement/dictionnaire et ont une dimension unique. Elles sont index�s � l'aide de cl�s enti�res ou de cha�nes (les entiers ne font pas r�f�rence � l'ordre des �l�ments) et sont redimensionn�es dynamiquement � mesure que les valeurs sont ajout�es ou supprim�es. Une valeur ne peut �tre atteinte qu'avec sa cl� d'origine - ces cl�s peuvent �tre it�r�es � l'aide de la fonction MapKeys.
Les tableaux et les tables utilisent une syntaxe similaire, il est donc n�cessaire de veiller � ce que la variable soit d'un type de donn�es correct - cela est d�termin� par la premi�re ligne de d�claration de la variable:
L'utilisation d'aucune dimension [ ] d�clare une table:
Local $vVar[] ; Une table
L'utilisation d'une dimension entre crochets declare un tableau:
Local $vVar[3] ; Un tableau
En assignant des valeurs aux �l�ments lors de la d�claration fait de la variable un tableau - ces trois lignes sont �quivalentes:
Local $vVar[3] = [1, 2, 3] ; Un tableau
Local $vVar[] = [1, 2, 3] ; Un tableau
Local $vVar = [1, 2, 3] ; Un tableau
Un tableau est une variable contenant une s�rie d'�l�ments. Vous pouvez acc�der � un �l�ment de cette variable par un index num�rique relatif � la position de l'�l�ment dans le tableau - dans AutoIt, le premier �l�ment d'un tableau est toujours l'�l�ment [0]. Les �l�ments d'un tableau sont enregistr�s dans un ordre pr�cis et peuvent �tre tri�s.
Un exemple:
Si vous vouliez stocker une liste de noms: "Jasper", "Beethoven", "Pinky" et "Fidget", vous pourriez utiliser quatre variables distinctes pour le faire, mais utiliser un tableau est plus efficace:
Local $aArray[4]
$aArray[0] = "Jasper"
$aArray[1] = "Beethoven"
$aArray[2] = "Pinky"
$aArray[3] = "Fidget"
Pour acc�der � une valeur sp�cifique d'un tableau, vous utilisez l'index num�rique:
$sString = $aArray[2] ; $sString contient "Pinky"
L'index num�rique peut aussi �tre substitu� par une autre variable or une expression, aussi vous pouvez inventer des m�thodes complexes pour assigner les �l�ments d'un tableau ou acc�der � ces �l�ments.
Les �l�ments d'un tableau entier peuvent �tre it�r�s en utilisant une boucle For...Next:
; UBound retourne le nombre total d'�l�ments - Comme le premier est [0] l'index le plus grand est 1 de moins
For $i = 0 To UBound($aArray) - 1
ConsoleWrite(aArray[$i] & @CRLF)
Next
$aArray[0][0] = "Upper-Left"
$aArray[1][0] = "Lower-Left"
$aArray[0][1] = "Upper-Right"
$aArray[1][1] = "Lower-Right"
(Ces valeurs ne sont que des exemples)
Vous pouvez utiliser jusqu'� 64 dimensions dans un tableau. Le nombre total d'entr�es ne peut pas d�passer 2^24 (16 777 216).
Les tableaux doivent �tre d�clar�s avant d'�tre utilis�s, en d�finissant leur port�e avec les mots-cl�s 'Global/Local/Static' et en sp�cifiant leur taille et/ou quelques assignations d'�l�ments.
Local $aArray1[2] ; Tableau avec 2 �l�ments, aucun assign�
Local $aArray[] = [8, 4, 5, 9, 1] ; Tableau avec 5 �l�ments, tous assign�s
Local $aArray[7] = [3, 7.5, "string"] ; Tableau avec 7 �l�ments, seulemnt les 3 premiers sont assign�s
Un �l�ment de tableau peut contenir n'importe quel type de donn�e AutoIt:
$aArray[0] = 1
$aArray[1] = True
$aArray[2] = "Texte"
$aArray[3] = $aAutreTableau
Un tableau stock� dans un autre tableau peut �tre atteint directement, mais cette m�thode est l�g�rement plus lente que d'y acc�der par d'autres types de donn�e:
Local $aInternal[3] = ["A", "B", "C"] ; D�clare un tableau
Local $aContainer[1] = [$aInternal] ; D�clare a tableau conteneur h�bergeant le premier tableau
$sString = ($aContainer[0])[1] ; $sString contient "B"
; Notez la n�cessit� d'inclure la premi�re d�finition d'�l�ment de tableau entre (...)
Une table est une variable contenant une s�rie d'�l�ments de donn�e, chacun consistant en une paire cl�/valeur. Un �l�ment ne peut �tre atteint que par sa cl�, qui peut �tre une cha�ne ou un nombre entier. Cependant une cl� de type nombre entier n'est pas relative � une position de l'�l�ment dans la table - les �l�ments ne sont pas dans un ordre d�fini et ne peuvent pas �tre tri�s. Les cl�s de type cha�ne, presque exclusivement dans AutoIt, sont sensibles � la casse - "MyKey" n'est pas la m�me cl� que "mykey".
Un exemple:
Vous voulez stocker un certain nombre de variables dans une collection de sorte que vous puissiez les passer � une fonction comme un seul param�tre. L'utilisation d'une table vous permet d'utiliser des cl�s de type cha�ne pour faire des r�f�rences � la valeur contenue - tels que les ControlIDs d'une s�rie de contr�les index�s par leurs noms. Notez que les �l�ments peuvent �tre adress�s soit par [] soit par '.':
Local $mControls[]
$mControls["Input"] = GUICtrlCreateInput(....)
$mControls.Combo = GUICtrlCreateCombo(...)
$mControls["Button"] = GUICtrlCreateButton(...)
Pour acc�der � une valeur sp�cifique d'une table, vous utilisez la cl� - la notation utilis�e n'a pas besoin d'�tre celle utilis�e initialement:
$idControlID = $mMap.Input ; Variable qui contient le ControlID pour Input
$idControlID = $mMap["Combo"] ; Variable qui contient le ControlID pour le Combo
Les cl�s de type nombre entier doivent utiliser la notation [] et ne sont pas les m�mes que leur �quivalent cha�ne:
$mMap[3] = "Integer 3" ; Ces cl�s sont diff�rentes
$mMap["3"] = "String 3"
Les tables doivent �tre d�clar�es avant d'�tre utilis�es, en d�finissant leur port�e avec un des mot-cl�s 'Global/Local/Static'.
Local $mControls[]
L'�l�ment d'une table peut contenir n'importe quel type de donn�e d'AutoIt:
$mMap["Integer"] = 1
$mMap.Boolean = True
$mMap["String"] = "Texte"
$mMap.Array = $aArray
$mMap["Map"] = $mAnotherMap
Une table interne peut �tre atteinte directement:
Local $mInternal[] ; D�clare une table
$mInternal["Internal"] = "AutoIt3" ; Assigne un �l�ment
Local $mContainer[] ; D�clare une table conteneur
$mContainer.Bin = $mInternal ; Assigne la premi�re table comme un �l�ment
; Toutes les valeurs suivantes sont "AutoIt3"
$sString = $mContainer["Bin"]["Internal"]
$sString = $mContainer.Bin.Internal
$sString = $mContainer["Bin"].Internal
$sString = $mContainer.Bin["Internal"]