[AutoIT]Alles über Arrays

07/20/2011 15:32 [T]Ere[B]Oritum#1
Hi zusammen,
In diesem Tutorial will ich euch alles über 1D und 2D Arrays erklären und wann man sie am besten einsetzt.
Fangen wir an.

Was ist Unterschied zwischen 1D und 2D Arrays ?

Man muss sich Arrays immer wie eine Tabelle vorstellen.Ein 1 Dimensionales Array kann Daten in einer Spalten und in einer fast unbegrenzt Anzahl von Zeilen speichern.Das heißt man kann nur Daten untereinander speichern un nicht nebeneinander.

1D Arrays sehen als Tabelle dann so aus:

Spalte
1. Zeile
2. Zeile
3. Zeile
...

Bei 2 Dimensionalen Arrays gibt es die möglichkeit mehrere Spalten zu verwenden und so auch Daten in der Vertikale zu Speichern.

2D Arrays sehen als Tabelle dann so aus:

Spalte 1Spalte 2
1.1.Zeile 1.2.Zeile
2.1.Zeile 2.2.Zeile
3.1.Zeile 3.2.Zeile
......

Soweit zu den Unterschieden.

Wann soll ich was verwenden ?

1D Arrays: Diese Arrays kann man verwenden um Sachen wie "GUICreate" befehle zusammen zu fassen oder um Einzelne zusammenhängende Sachen wie Namen, Adressen etc. zu Speichern.

2D Arrays: Hier kann man Zusammenhängende Daten wie z.B komplette Kontakt Formulare zu Speichern oder *.ini Dateien Komplett zu übernehmen.
z.B

*.ini Datei :
Code:
[Überschrift1]
Kennung1 = Wert
Kennung2 = Wert2
2D Array

Überschrift1Kennung1Wert
Überschrift1Kennung2Wert2

Das waren nur ein Paar Verwendungsbeispiele.

Nutzung von 1D Arrays

Deklarieren:

Wir erstellen 1D Arrays immer nach folgender Muster:
Code:
Local $ArrayName[Anzahl an Zeilen]
Also:
Code:
Local $Array[2]
Wichtig ist dabei das man ab 0 anfängt zu Zählen.Das heißt bei der Zahl 2 sind es 3 Spalten.

Zeilen füllen:

Wir können die Zeilen auf 2 Weisen füllen

1.Wir geben als erstes den Array Namen mit der Zeile an die wir füllen wollen.Danach wird der Inhalt angegeben.
Code:
$Array[1] = "Das ist Zeile 2"
2.Wir können Arrays auch mit dem Befehl
Code:
#Include <Array.au3>
_ArrayAdd(Array Name,Wert)
Hier wird der Wert in die nächste leere Spalte eingetragen.

oder

Code:
#Include <Array.au3>
_ArrayInsert(Array Name,Spalte,Wert)
Hier wird der Wert in eine angegebene Spalte eingetragen.

Ausgeben:

Wir können Arrays ganz einfach mit dem Array Name und der Spalte ausgeben wie in diesem Beispiel in einer MsgBox.

Code:
MsgBox(0,"Arrays",$Array[1])
Nutzung von 2D Arrays

Deklarieren:

Bei 2D Arrays muss man anstatt nur die Zeilen auch die Spalten angeben.Das Muster hier ist
Code:
Array Name [$Zeilen][Spalten]
Also:
Code:
Local $Array2D[2][5]
Auch hier gilt das Zählen beginnt bei 0

Zeilen füllen:

Hier gibt es nur 1 Möglichkeit:

1.Bei 2D Arrays muss man um sie zu füllen wieder die Zeile und Spalte angeben die man füllen will.Wie bei den 1D Arrays gilt auch hier Array Name + Spalte + Zeile + Wert also
Code:
$Array2D[2][1] = Zeile3Spalte2
Ausgeben:

Um die Arrays auszugeben reicht es wieder den Namen, die Zeile und die Spalte anzugeben.

Tipp:

Um mehrere Daten schnell einzutragen oder ausgegeben gibt es die For Schleife.Code mit erklärung:
[Only registered and activated users can see links. Click Here To Register...]

Function für Arrays:

UBound:
Gibt die Größe (Obergrenze) der Dimension eines Datenfeldes (array) zurück.
[Only registered and activated users can see links. Click Here To Register...]
---------------------------------------------------------------------------------------
ReDim:
Verändert die Größe eines bestehenden Arrays.
[Only registered and activated users can see links. Click Here To Register...]

---------------------------------------------------------------------------------------
_ArrayAdd:
Fügt den angegeben Wert an dem Ende des angegebenen Arrays hinzu.
[Only registered and activated users can see links. Click Here To Register...]

---------------------------------------------------------------------------------------
_ArrayInsert:
Fügt einen neuen String an der festgelegten Position in das Array ein.
[Only registered and activated users can see links. Click Here To Register...]

---------------------------------------------------------------------------------------
For Next Step
Schleife, die auf einem Ausdruck basiert.
[Only registered and activated users can see links. Click Here To Register...]