Sprachreferenz - Variablen

Eine Variable ist -einfach gesehen- nur ein Ort, um Daten im Speicher abzulegen, damit schnell darauf zugegriffen werden kann. Man stelle sie sich einfach als ein Postfach im Speicher vor, in das man Informationen hinein legen oder heraus nehmen kann. Zum Beispiel könnte man eine Variable erstellen, um eine Zahl, die Antwort auf eine Frage oder das Ergebnis einer mathematischen Gleichung darin zu speichern.

Jede Variable hat einen Namen (ähnlich eines Postfaches), muss mit einem $ Zeichen beginnen und darf nur Buchstaben, Zahlen und den Unterstrich _ enthalten. Hier sind einige Beispielnamen:

$var1

$meine_Variable

Jede Variable wird als Variant. gespeichert.

Variablen deklarieren

Variablen werden mit den Schlüsselwörtern Dim, Local und Global deklariert und erstellt:

Dim $var1

Oder man kann auch mehrere Variablen auf einmal deklarieren:

Dim $var1, $meine_Variable

Man kann eine Variable aber auch zuweisen, ohne sie vorher zu deklarieren, aber viele bevorzugen die explizite Deklarierung.

$var1 = "erstellen und zuweisen"

Konstanten deklarieren

Konstanten werden mit dem Schlüsselwort Const deklariert und erstellt, wie z.B.:

Const $const1 = 1, $const2=12

Konstanten können auch mit dem Schlüsselwort Enum deklariert und initialisiert werden, z.B.:

Enum $const1 = 1, $const2, $const3 ; 1, 2, 3
Enum STEP 2 $incr0, $incr2, $incr4 ; 0, 2, 4
Enum STEP *2 $mult1, $mult2, $mult4 ; 1, 2, 4

Konstanten können keine bereits existierenden Variablen neu deklarieren.

Gültigkeitsbereich

Der Gültigkeitsbereich einer Variablen wird gesteuert durch die Tatsache, wann und wie man die Variable deklariert. Deklariert man eine Variable am Anfang eines Skripts und außerhalb von Funktionen, existiert sie in dem Gültigkeitsbereich Global und kann von überall aus dem Skript gelesen oder geändert werden.

Deklariert man eine Variable innerhalb einer Funktion, befindet sie sich in dem Gültigkeitsbereich Local und kann nur innerhalb dieser einen Funktion genutzt werden. Variablen, die innerhalb einer Funktion erstellt wurden, werden automatisch am Ende dieser Funktion zerstört.

Werden Variablen über Dim deklariert oder innerhalb einer Funktion zugewiesen, haben sie standardmäßig den Gültigkeitsbereich Local, es sei denn, es gibt eine globale Variable des selben Namens (in diesem Fall wird die globale Variable verwendet). Dies kann geändert werden, indem man die Schlüsselwörter Local und Global benutzt, um Variablen zu deklarieren, und um so den gewünschten Gültigkeitsbereich zu erzwingen.

Arrays

Ein Array ist eine Variable, die eine Reihe von Datenelementen desselben Typs und derselben Größe enthält. Auf jedes Element in dieser Variablen kann über eine Indexnummer zugegriffen werden.

Ein Beispiel:

Man möchte z.B. diese Reihe an Zeichen speichern: "A", "U", "T", "O", "I", "T" und "3".
Man könnte hierfür sieben separate Variablen benutzen, aber ein Array zu benutzen ist viel effizienter:

$Array[0]="A"
$Array[1]="U"
..etc..
$Array[6]="3"

Um einen spezifischen Wert in einem Array anzusprechen, muss man nur die Indexnummer kennen:

$MeinZeichen=$Array[2]

Als Ergebnis erhält man in $MeinZeichen den Buchstaben "T" (siehe auch: 'Operatoren').


Die Indexnummer kann auch durch eine andere Variable oder einen Ausdruck ersetzt werden. Auf diese Weise kann man komplexe Arten verwenden, auf Elemente in einem Array zuzugreifen oder sie zu erzeugen.


Arrays können auch mehrdimensional sein, wenn man mehrere Reihen an Indexnummern benutzt, wie z.B.:

$Array[0][0]="Upper-Left"
$Array[1][0]="Lower-Left"
$Array[0][1]="Upper-Right"
$Array[1][1]="Lower-Right"

(Diese Werte sind einfach nur Beispiele.)
Man kann bis zu 64 Dimensionen in einem Array verwenden. Die Gesamtanzahl der Einträge kann dabei nicht größer sein als 2^24 (16 777 216).

Bevor man ein Array in einem Skript verwenden kann, muss man mit dem Schlüsselwort 'Dim' dessen Grenzen definieren.

Datentypen in Arrays


Es wurde gesagt, dass ein Array nur Datentypen eines Typs enthält. Aber technisch gesprochen kann ein Variant in AutoIt alles mögliche -von einer Zahl bis zu einem Bool'schen Wert- enthalten. So könnte ein AutoIt-Array auch verschiedene Typen enthalten, sogar andere Arrays:

$Array[0]=1
$Array[1]=wahr
$Array[2]="Text"
$Array[3]=$AnderesArray

Dies wurde in AutoIt nicht ausdrücklich verboten. Trotzdem ist es NICHT RATSAM, unterschiedliche Datentypen in einem Array zu vermischen. Speziell der Gebrauch eines Arrays innerhalb eines anderen Arrays wird die Ausführungsgeschwindigkeit des Skripts massiv beeinflussen.