Deklariert eine Variable, Konstante oder definiert ein Array.
Global | Local [Const] $variable [ = initializer ]
Global | Local [Const] $aArray[subscript 1]...[subscript n] [ = initializer ]
Const | [optional] Wenn angegeben, wird statt einer Variablen eine Konstante deklariert. |
$variable | Der Name der zu deklarierenden Variablen. |
initializer | Der Wert, welcher der Variablen am Anfang zugeteilt wird. Eine Konstante muss den Initializer enthalten. Der Initializer kann ein Funktionsaufruf sein. |
subscript | Die Anzahl Elemente eines Arrays (0 bis n-1). |
Die Schlüsselwörter Dim, Local und Global haben eine ähnliche Funktionsweise:
1. Deklariert eine Variable, bevor sie verwendet wird (ähnlich zu VBScript)
2. Erzeugt ein Array
Hinweis: In AutoIt kann man eine Variable erzeugen, indem man ihr einfach einen Wert zuweist ($myvar = 0). Viele Leute deklarieren sie aber lieber explizit. Falls AutoItSetOption("MustDeclareVars", 1) aktiv ist, dann müssen Variablen vor der Benutzung explizit deklariert werden.
Es können auch mehrere Variablen in einer Zeile deklariert werden:
Local $vVar_1, $vVar_2, $vVar_3
Local $vVar_1 = 10, $vVar_2 = "20", $vVar_3 = 30
Const $CONST_1 = 1, $CONST_2 = 2, $CONST_3 = 3
Global Const $PI = 3.14, $MEANING_OF_LIFE = 42
Local Const $iApples = 500
Local $aArray_1[12] = [3, 7.5, "string"], $aArray_1[5] = [8, 4, 5, 9, 1]
Local $aGrid[2][4] = [["Paul", "Jim", "Richard", "Louis"], [485.44, 160.68, 275.16, 320.00]]
Global $aTest[5] = [3, 1, StringSplit("Abe|Jack|Bobby|Marty", "|"), Cos(0)]
AutoItSetOption, UBound, ReDim, Static
; Variablen deklarieren
Local $i, $j = 23, $k
Global $g_fPI = 3.14159, $g_iRADIUS
Local $iDaysWorking = 5
; Arrays deklarieren
Global $g_aChessBoard[8][8]
Global $g_aEmptyArray[0]
Global $g_aAutoSize[] = [1, 2, 3, 4]
Local $aStates[2], $aWindowsStats[4]
Local $a2Dimensions[2][3] = [[1, 2, 3], [4, 5, 6]]
; Konstanten deklarieren
Const $iX1 = 11, $iY1 = 23, $iZ1 = 55
Global Const $PI = 3.14159, $E = 2.71828
Local Const $DAYS_WORKING = 5
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w- 3 -w- 6 ; var bereits deklariert=off, warnen bei Verwendung von Dim=off
#include <MsgBoxConstants.au3>
Dim $vVariableThatIsGlobal = "Dies ist eine Variable mit dem ""Programm Anwendungsbereich"" auch bekannt als Global."
MsgBox($MB_SYSTEMMODAL, "", "Ein Beispiel dafür, warum Dim mehr Probleme verursachen als lösen kann.")
Example()
Func Example()
; Das sieht für mich in Ordnung aus, da es den folgenden Text anzeigt: Dies ist eine Variable mit dem "Programm Anwendungsbereich" auch bekannt als Global.
MsgBox($MB_SYSTEMMODAL, "", $vVariableThatIsGlobal)
; Ruft eine Zufallsfunktion auf.
Local $vReturn = SomeFunc()
; Die globale Variable ($vVariableThatIsGlobal) hat sich geändert, weil ich völlig vergessen habe, dass ich in "SomeFunc" einen doppelten Variablennamen hatte.
MsgBox($MB_SYSTEMMODAL, $vReturn, "Die Variable hat sich jetzt geändert: " & $vVariableThatIsGlobal)
EndFunc ;==>Example
Func SomeFunc()
; Dies sollte eine Variable im lokalen Bereich erstellen, wenn der Variablenname noch nicht vorhanden ist.
; Aus Gründen der Aussage habe ich völlig vergessen, dass ich bereits eine Variable mit demselben Namen deklariert habe.
; Nun, ich möchte nur, dass dies in der Funktion geändert wird und nicht in der Variablen oben im Skript.
; Sollte in Ordnung sein, oder? Denk nochmal.
Dim $vVariableThatIsGlobal = ""
For $i = 1 To 10
$vVariableThatIsGlobal &= $i ; Dies gibt 12345678910 zurück und löscht den vorherigen Inhalt von $vVariableThatIsGlobal vollständig.
Next
Return $vVariableThatIsGlobal
EndFunc ;==>SomeFunc