Wenn Sie eine Variable deklariert haben, weisen Sie ihr in den meisten Fällen nur einen einzelnen Wert zu. Eine Variable, die einen einzelnen Wert enthält, ist eine skalare Variable. In anderen Fällen bietet es sich an, einer einzelnen Variable mehrere zugehörige Werte zuzuweisen. Sie können eine Variable erstellen, die eine Reihe von Werten enthalten kann. Diese wird als Arrayvariable bezeichnet. Arrayvariablen und skalare Variablen werden auf dieselbe Weise deklariert. Der Unterschied besteht darin, dass die Deklaration einer Arrayvariable Klammern ( ) nach dem Variablennamen verwendet.
Im folgenden Beispiel wird ein eindimensionales Array mit 11 Elementen deklariert:
Dim A(10)
Obwohl in Klammern die Zahl 10 angezeigt wird, haben alle Arrays in BSL eine Nullbasis. Dieses Array enthält also 11 Elemente. In einem nullbasierten Array ist die Anzahl der Arrayelemente immer die Zahl, die in Klammern angezeigt wird, plus eins. Diese Art von Array wird als Array mit fester Größe bezeichnet.
Sie können jedem Element des Arrays mithilfe eines Index im Array Daten zuweisen. Von null bis 10 können Daten wie folgt den Elementen eines Arrays zugewiesen werden:
A(0) = 256
A(1) = 324
A(2) = 100
. . .
A(10) = 55
Ebenso können die Daten über einen Index im gewünschten Arrayelement aus einem beliebigen Element abgerufen werden.
Beispiel:
SomeVariable = A(8)
Arrays sind nicht auf eine einzelne Dimension beschränkt. Sie können mehrere Dimensionen deklarieren, indem Sie die Größenzahlen eines Arrays in Klammern durch Kommas trennen. Im folgenden Beispiel ist die Variable MyTable ein zweidimensionales Array mit 6 Zeilen und 11 Spalten:
Dim MyTable(5,10)
In einem zweidimensionalen Array ist die erste Zahl immer die Anzahl der Zeilen und die zweite Zahl die Anzahl der Spalten.
Sie können auch ein Array deklarieren, dessen Größe sich während der Ausführung Ihres Skripts ändert. Das wird als dynamisches Array bezeichnet. Das Array wird zunächst innerhalb einer Prozedur mit der Dim-Anweisung oder der ReDim-Anweisung deklariert. Für ein dynamisches Array wird jedoch keine Größe oder Anzahl von Dimensionen innerhalb der Klammern platziert.
Beispiel:
Dim MyArray() ReDim AnotherArray() ' Illegal as no dimension specified ReDim AnotherArray(3)
Um ein dynamisches Array zu nutzen, müssen Sie anschließend ReDim verwenden, um die Anzahl an Dimensionen und die Größe jeder Dimension zu bestimmen. Im folgenden Beispiel setzt ReDim die Anfangsgröße des dynamischen Arrays auf 25. Eine nachfolgende ReDim-Anweisung ändert die Größe des Arrays auf 30, verwendet jedoch das Schlüsselwort Preserve, um den Inhalt des Arrays bei der Größenänderung beizubehalten.
ReDim MyArray(25) . . . ReDim Preserve MyArray(30)
Sie können die Größe eines dynamischen Arrays beliebig oft ändern. Wenn Sie ein Array aber verkleinern, gehen die Daten in den eliminierten Elementen verloren.
Die folgenden Beispiele veranschaulichen die Verwendung der skalaren Variablen und Arrayvariablen:
Beispiel 1:
Dim B B = 200 ' Assigns the value 200 to the variable B.
Beispiel 2:
Dim A(3) ' Declares a single-dimension array with 4 elements 0 to 3 indexes. ' Assigning values to each element of the array. A(0) = 256 A(1) = 324 A(2) = 100 ' Retrieving a value from the array. Dim SomeVariable SomeVariable = A(1) ' Retrieves the value at index 1.
Beispiel 3:
Dim MyArray() ' Declares a dynamic array. ReDim MyArray(25) ' Sets the initial size of the dynamic array to 25 elements. ' Assigning values to the dynamic array. MyArray(0) = "First" MyArray(25) = "Last" ' Resizing the dynamic array and preserving contents. ReDim Preserve MyArray(30) ' Resizes the array to 30 elements and preserves existing data.
Beispiel 4:
Dim AnotherArray() ReDim AnotherArray(10) ' Initial size of 10 elements. ' Assigning values to the array. AnotherArray(0) = "Alpha" AnotherArray(10) = "Omega" ' Resizing the array multiple times. ReDim Preserve AnotherArray(20) AnotherArray(20) = "NewElement" ReDim Preserve AnotherArray(5) ' Reduces the size of the array (data beyond index 5 is lost).