DIMENSION-Befehl

Erstellt ein ein- oder zweidimensionales Array von Variablen.

DIMENSION ArrayName1(nRows1 [, nColumns1])
   [, ArrayName2(nRows2 [, nColumns2])] ...

Parameter

  • ArrayName1
    Gibt den Namen des Arrays an. Sie können mit einem DIMENSION-Befehl durch Angabe weiterer Arraynamen mehrere Arrays erstellen (ArrayName2, ArrayName3 usw.).

  • nRows1 [, nColumns1]
    Gibt die Größe des zu erstellenden Arrays an. Wenn Sie nur nRows1 angeben, wird ein eindimensionales Array erstellt. Dieses hat eine Spalte und nRows1 Zeilen. Mit dem folgenden Befehl wird z. B. ein eindimensionales Array mit der Bezeichnung gaArrayOne erstellt, das eine Spalte und zehn Zeilen enthält.

    DIMENSION gaArrayOne(10)
    

    Zur Erstellung eines zweidimensionalen Arrays müssen Sie nRows1 und nColumns1 angeben. nRows1 gibt die Anzahl der Zeilen im Array und nColumns1 die Anzahl der Spalten an. Im folgenden Beispiel wird ein zweidimensionales Array mit der Bezeichnung gaArrayTwo mit zwei Zeilen und vier Spalten erstellt:

    DIMENSION gaArrayTwo(2,4)
    

    Für jedes Array, das Sie mit DIMENSION erstellen, müssen Sie die Größe angeben. Im folgenden Beispiel werden drei Arrays erstellt: gaArrayOne und gaArrayTwo aus den vorherigen Beispielen und ein drittes Array mit der Bezeichnung gaArrayThree:

    DIMENSION gaArrayOne(10), gaArrayTwo(2,4), gaArrayThree(3,3)
    

    Die Ausdrücke in DIMENSION oder DECLARE können Sie in eckige oder runde Klammern einschließen. Mit den folgenden beiden Befehlen werden z. B. identische Arrays erstellt:

    DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3)
    DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3]
    

Hinweise

DIMENSION ist in Funktionsweise und Syntax mit DECLARE identisch.

Arrayelemente…   Die Größe eines Arrays bestimmt, wie viele Elemente es enthalten kann. In jedem Element eines Arrays kann eine Information gespeichert werden. Um zu ermitteln, wie viele Elemente ein Array enthält und wie viele Informationen gespeichert werden können, multiplizieren Sie die Anzahl der Zeilen (nRows1) im Array mit der Anzahl der Spalten (nColumns1).

Arrayelemente werden beim Erstellen des Arrays zunächst mit dem Wert Falsch (.F.) initialisiert. Sie können alle Elemente in einem Array mit STORE mit demselben Wert initialisieren, wenn SET COMPATIBLE auf FOXPLUS oder OFF (Standardeinstellung) gesetzt ist. Beispiel:

DIMENSION gaArray(10,3)
STORE 'initial' TO gaArray

Arrayindizes…   Die Elemente in einem Array werden über ihre Indizes angesprochen. Jedes Arrayelement hat dabei einen numerischen Index, der es eindeutig identifiziert. Bei einem eindimensionalen Array ist der Index eines Elements mit der Zeilennummer identisch, so ist z. B. der Index für das Element in der dritten Zeile eines eindimensionalen Arrays gleich 3.

Elemente in zweidimensionalen Arrays werden über zwei Indizes angesprochen. Der erste Index gibt dabei die Zeilenposition des Elements und der zweite die Spaltenposition an. Die Indizes für das Element in der dritten Zeile und vierten Spalte eines zweidimensionalen Arrays sind z. B. 3,4. Weitere Erläuterungen zu Arrayelementindizes finden Sie unter ASUBSCRIPT( ).

Der Index bzw. die Indizes für das erste Element in einem Array beginnen immer mit 1. Auch bei einem zweidimensionalen Array kann ein Element über einen einzigen Index angesprochen werden. Mit AELEMENT( ) wird der Einzelindex aus einem Paar von Arrayzeilen- und Arrayspaltenindizes bzw. mit ASUBSCRIPT( ) die Zeilen- und Spaltenindizes aus einem einzelnen Index zurückgegeben.

Ändern von Arrays…   Sie können die Größe und Dimensionen eines Arrays durch erneute Angabe von DIMENSION ändern. Sie können ein Array vergrößern oder verkleinern, eindimensionale Arrays in zweidimensionale umwandeln und zweidimensionale auf eine Dimension reduzieren.

Wird die Anzahl der Elemente in einem Array vergrößert, wird der Inhalt aller Elemente des ursprünglichen Arrays in das neue Array kopiert. Die zusätzlichen Arrayelemente werden mit dem Wert Falsch (.F.) initialisiert.

Wird die Größe eines Arrays erhöht oder verringert, wenn SET COMPATIBLE auf ON oder DB4 festgelegt ist, so wird der Wert der einzelnen Elemente im Array erneut mit .F. initialisiert.

Beispiel

Beispiel 1 veranschaulicht die Auswirkungen des Vergrößerns eines eindimensionalen Arrays. (Beachten Sie, dass bei Eingabe dieser Befehle in das Befehlsfenster das Array PUBLIC ist. Geben Sie die Befehle jedoch in ein Programm ein und führen dieses aus, so ist das Array PRIVATE.)

Wird die Anzahl der Elemente in einem Array verringert, werden die Elemente und die darin enthaltenen Daten gelöscht. Wird ein eindimensionales Array in ein zweidimensionales umgewandelt, wird der Inhalt des ursprünglichen, eindimensionalen Arrays in das neue Array in einer Element-in-Zeile-Reihenfolge kopiert.

In Beispiel 2 wird ein eindimensionales Array in ein zweidimensionales umgewandelt. Der Inhalt der Elemente des eindimensionalen Arrays wird in die erste Zeile des neuen Arrays kopiert, danach folgt die zweite Zeile usw. Die zusätzlichen Elemente werden mit dem Wert Falsch (.F.) initialisiert.

Wird ein zweidimensionales Array in ein eindimensionales umgewandelt, wird dessen Inhalt in das neue Array in einer Zeile-in-Element-Reihenfolge kopiert. Das erste Element in der ersten Zeile wird das erste Element im eindimensionalen Array; das zweite Element in der ersten Zeile wird das zweite Element usw.

Verwenden Sie zum Löschen und Einfügen von Arrayelementen, -zeilen und -spalten die Befehle ADEL( ) und AINS( ). Mit den Befehlen APPEND FROM ARRAY, COPY TO ARRAY, SCATTER und GATHER können Sie Daten zwischen Datensätzen in Tabellen und Arrays übertragen.

In Beispiel 3 wird ein zweidimensionales Array erstellt und mit Daten geladen. Die Arrayelemente werden mit den darin enthaltenen Daten angezeigt.

* Example 1
DIMENSION marray(2)
STORE 'A' TO marray(1)
STORE 'B' TO marray(2)
CLEAR
DISPLAY MEMORY LIKE marray
DIMENSION marray(4)
DISPLAY MEMORY LIKE marray
WAIT WINDOW

* Example 2
DIMENSION marrayone(4)
STORE 'E' TO marrayone(1)
STORE 'F' TO marrayone(2)
STORE 'G' TO marrayone(3)
STORE 'H' TO marrayone(4)
CLEAR
DISPLAY MEMORY LIKE marrayone
DIMENSION marrayone(2,3)
DISPLAY MEMORY LIKE marrayone
WAIT WINDOW

* Example 3
DIMENSION sample(2,3)
STORE 'Goodbye' TO sample(1,2)
STORE 'Hello' TO sample(2,2)
STORE 99 TO sample(6)
STORE .T. TO sample(1)
CLEAR
DISPLAY MEMORY LIKE sample

Siehe auch

ACOPY( ) | ADEL( ) | ADIR( ) | AELEMENT( ) | AFIELDS( ) | AFONT( ) | AINS( ) | ALEN( ) | APPEND FROM ARRAY | ASCAN( ) | ASORT( ) | ASUBSCRIPT( ) | COPY TO ARRAY | DECLARE | EXTERNAL | GATHER | PRIVATE | PUBLIC | SCATTER | SET COMPATIBLE | STORE