Ein dynamisches Array ist ein Array, das ein echtes Gambas-Objekt ist. Die Größe eines dynamischen Arrays kann zur Laufzeit abgefragt werden. Ein dynamisches Array mit einer Dimension kann jederzeit in seiner Größe geändert werden.
Beispiel:
[1] Public Sub btnShowExample_Click() [2] Dim i, j As Integer [3] Dim a2DDateArray As New Date[][] [4] Dim myArray As Date[] [5] [6] a2DDateArray.Resize(10) ' * [7] [8] For i = 0 To 9 [9] a2DDateArray[i] = New Date[] [10] a2DDateArray[i].Resize(5) ' ** [11] For j = 0 To 4 [12] a2DDateArray[i][j] = Date(Now() + j – i) ' Unterschiedliche Datumswerte generieren [13] Next ' j [14] Next ' i [15] [16] ' Ausgabe IDE-Konsole (Beispiel Terminplan): [17] For Each myArray In a2DDateArray [18] For j = 0 To myArray.Max [19] Print Format(myArray[j], "dd. mm. yyyy"); " | "; [20] If (j + 1) Mod (myArray.Max + 1) = 0 Then Print [21] Next ' j [22] Next ' myArray [23] [24] Print "Dimension von a2DDateArray: ", a2DDateArray.Dim [25] Print "Anzahl Elemente von 'a2DDateArray': ", a2DDateArray.Count [26] Print "Anzahl Elemente von 'a2DDateArray': ", a2DDateArray.Bounds[0] ' Alternative [27] [28] End ' btnShowExample_Click()
Ausgabe in der IDE-Konsole:
29. 04. 2014 | 30. 04. 2014 | 01. 05. 2014 | 02. 05. 2014 | 03. 05. 2014 | 28. 04. 2014 | 29. 04. 2014 | 30. 04. 2014 | 01. 05. 2014 | 02. 05. 2014 | 27. 04. 2014 | 28. 04. 2014 | 29. 04. 2014 | 30. 04. 2014 | 01. 05. 2014 | 26. 04. 2014 | 27. 04. 2014 | 28. 04. 2014 | 29. 04. 2014 | 30. 04. 2014 | 25. 04. 2014 | 26. 04. 2014 | 27. 04. 2014 | 28. 04. 2014 | 29. 04. 2014 | 24. 04. 2014 | 25. 04. 2014 | 26. 04. 2014 | 27. 04. 2014 | 28. 04. 2014 | 23. 04. 2014 | 24. 04. 2014 | 25. 04. 2014 | 26. 04. 2014 | 27. 04. 2014 | 22. 04. 2014 | 23. 04. 2014 | 24. 04. 2014 | 25. 04. 2014 | 26. 04. 2014 | 21. 04. 2014 | 22. 04. 2014 | 23. 04. 2014 | 24. 04. 2014 | 25. 04. 2014 | 20. 04. 2014 | 21. 04. 2014 | 22. 04. 2014 | 23. 04. 2014 | 24. 04. 2014 | Dimension von 'a2DDateArray': 1 Anzahl Elemente von 'a2DDateArray': 10 Anzahl Elemente von 'a2DDateArray': 10 ' Alternative
Die Struktur der gruppierten Anzeige entspricht auch der Speicher-Struktur im Array 'a2DDateArray', da Sie zum Beispiel auf das 4. Datum im 7. Element so zugreifen können:
Print Format(a2DDateArray[6][3], "dd. mm yyyy")
Beachten Sie, dass sowohl 'a2DDateArray' als auch alle Arrays 'a2DDateArray[i]' (→ Zeile 9) mit dem Index i aus dem Intervall von 0 bis 9 eindimensionale Arrays sind und Sie deshalb die Möglichkeit haben, die Dimension zur Laufzeit zu ändern! In den Zeilen * und ** wird das auch praktiziert, was Ihnen mit der folgenden (statischen) Deklaration nicht möglich wäre:
Dim a2DDateArray As New Date[10][5]
Auf das (Hilfs-)Array 'myArray' könnten Sie verzichten, wenn Sie den Quelltext für die Ausgabe so ändern:
For i = 0 To a2DDateArray.Max For j = 0 To a2DDateArray[i].Max If (j + 1) Mod (a2DDateArray[i].Max + 1) = 0 Then Print Format(a2DDateArray[i][j], "dd. mm. yyyy"); " | " Else Print Format(a2DDateArray[i][j], "dd. mm. yyyy"); " | "; Endif Next ' j Next ' i
Dynamische Arrays von Strukturen werden zur Zeit nicht unterstützt (→ Kapitel 7.2.1.2 Arrays von Strukturen), weil 'Struct' als strukturierter Daten-Container gedacht ist. Wenn Sie dynamische Arrays brauchen, dann verwenden Sie eine Klasse statt einer Struktur, denn in Gambas können Sie von jeder Klasse einen dynamischen Array-Typ ableiten.
Struktur:
Public Struct Schueler JGS As Integer GebDatum As Date Nachname As String DG1Kurs As String DG2Kurs As String End Struct
Quelltext CDS.class:
' Gambas class file ' Diese Klasse ist eine (reine) Datenstruktur ohne eigene Methoden. ' Sie repräsentiert zum Beispiel einen Datensatz Public JGS As Integer Public GebDatum As Date Public Nachname As String Public DG1Kurs As String Public DG2Kurs As String
Im Hauptprogramm können Sie durch CDS[] einen dynamischen Array-Typ erzeugen, dessen Elemente Objekte vom Typ CDS sind → Kapitel 7.4.3.2 Abgeleitete Arrays. Sie können mit diesem abgeleiteten Array so arbeiten, wie Sie es auch von den Strukturen gewohnt sind – jedoch ohne die (statischen) Schranken einer Struktur.
Artikel