Schlüsselwortreferenz
Dim / Global / Local / Const
Deklariert eine Variable, Konstante oder definiert ein Array.
Parameter
| 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). |
Bemerkungen
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:
Dim $a, $b, $c
Und man kann ihnen auch gleich einen Wert zuweisen, wenn die Variable kein Array ist:
Dim $a = 2, $b = 10, $c = 20
Die Erzeugung von Konstanten wird ähnlich durchgeführt:
Const $a = 2, $b = 10, $c = 20
Dim Const $d = 21, $e = Exp(1)
Local Const $f = 5, $g = 7, $h = -2
Wenn eine Konstante einmal erzeugt wurde, kann ihr Wert danach nicht mehr verändert werden. Außerdem kann man eine existierende Variable nicht in eine Konstante umwandeln.
Um ein Array zu deklarieren, sind die Maximalwerte für jedes Element in eckigen Klammern, getrennt durch Kommas anzugeben. Für mehrere Dimensionen sind die Initialisierer zu verschachteln. Es können weniger Elemente im Initialisierer festgelegt werden als deklariert, aber nicht mehr. Es können auch Funktionsaufrufe in dem Initializer eines Arrays platziert werden. Falls die Funktion ein Array zurückgibt, dann enthält dieses eine Arrayelement das zurückgegebene Array aus der Funktion.
Dim $Array1[12]=[3, 7.5, "string"], $array[5] = [8, 4, 5, 9, 1]
Dim $Grid[2][4]=[["Paul", "Jim", "Richard", "Louis"], [485.44, 160.68, 275.16, 320.00]]
Dim $Test[5] = [3, 1, StringSplit("Abe|Jack|Bobby|Marty", "|"), Cos(0)]
Der Unterschied zwischen Dim, Local und Global ist der Gültigkeitsbereich, für den die Variablen deklariert werden:
Dim = Wenn der Variablename nicht schon mit globalem Gültigleitsbereich existiert, hat die definierte Variable einen lokalen Gültigkeitsbereich (falls die Variable schon global existiert, so wird die globale Variable verwendet.)
Global = Erzwingt globale Gültigkeit der Variablen
Local = Erzwingt lokale Gültigkeit der Variablen, bzw. innerhalb der Funktion
Man sollte Local oder Global anstelle von Dim verwenden, um explizit den Gültigkeitsbereich für die Variable / Konstante / Array festzulegen.
Wenn Variablen verwendet werden, wird zuerst geprüft, ob die Variable lokal existiert, und erst danach, ob sie global deklariert ist.
Wenn ein Array erzeugt wird, ist es auf maximal 64 Dimensionen und/oder 16 Millionen Elemente begrenzt.
Eine einzigartige Besonderheit in AutoIt ist die Möglichkeit, Arrays wie folgt zu kopieren:
$mycopy = $myarray
In diesem Fall ist $mycopy eine exakte Kopie von $myarray und hat dieselben Dimensionen - es ist keine vorherige Deklaration mit Dim nötig. Wenn AutoItSetOption("MustDeclareVars", 1) aktiv ist, dann muss die Variable $mycopy zuvor deklariert zu werden, die Angabe der Größe ist dabei nicht vonnöten. Wenn die Variable $mycopy bereits als Array deklariert war, wird es gelöscht, bevor das Kopieren stattfindet.
Um ein Array zu leeren (z.B., weil man den Speicherplatz eines großen, globalen Arrays freigeben möchte), weist man ihm einfach einen einzigen Wert zu:
$array = 0
Das gibt den Speicherplatz des Arrays frei und setzt es auf den einzigen Wert 0.
Deklariert man den den Variablennamen erneut, werden alle Werte des Arrays gelöscht, und auf die neu definierte Größe dimensioniert.
Falls man eine Variable mit demselben Namen als Funktions-Parameter deklariert, oder wenn Local innerhalb einer Benutzerfunktion verwendet wird, tritt ein Fehler auf. Global kann verwendet werden, um es einer globalen Variablen innerhalb einer Funktion zuzuweisen. Aber wenn eine lokale Variable (oder Parameter) den selben Namen wie eine globale Variable besitzt, so wird die lokale Variable verwendet. Es ist empfehlenswert, den lokalen und globalen Variablen verschiedene Namen zu geben.
Verwandte Funktionen
UBound, ReDim, Static, AutoItSetOption
Beispiel
; Beispiel 1 - Variablen deklarieren
Dim $x, $y = 23, $z
Global $_PI = 3.14159, $RADIUS
Local $_daysWorking = 5
; Beispiel 2 - Arrays deklarieren
Dim $weeklyWorkSchedule[$_daysWorking]
Global $chessBoard[8][8]
Local $mouseCoordinates[2], $windowStats[4]
; Beispiel 3 - Konstante Variablen deklarieren
Const $x1 = 11, $y1 = 23, $z1 = 55
Global Const $PI = 3.14159, $E = 2.71828
Local Const $daysWorking = 5