Die Klasse von abgeleiteten Arrays wird 'on the fly' vom Interpreter erstellt.
Drei Beispiele für abgeleitete Arrays:
Dim aLabels As New Label[] Dim aComponents As New Component[] Dim KL As New CDS[] ' Array der deklarierten Klasse CDS
Beispiel 1 – Einsatz eines eindimensionalen, abgeleiteten Arrays
Es werden alle im aktuellen Projekt geladenen Komponenten in einem abgeleiteten, eindimensionalen Arrays gespeichert, sofort wieder ausgelesen und angezeigt:
Quelltext-Ausschnitt:
[1] Dim hComponent As Component [2] Dim aComponents As New Component[] [3] Dim iCount As Integer [4] [5] For Each hComponent In Components ' Über alle geladenen Klassen iterieren ... [6] aComponents.Add(hComponent) [7] Next [8] [9] For Each hComponent In aComponents [10] Inc iCount [11] Print "Komponente "; icount; " = "; hComponent.Name [12] Next
Ausgabe in der IDE-Konsole:
Komponente 1 = gb.debug Komponente 2 = gb.image Komponente 3 = gb.qt4 Komponente 4 = gb.form Komponente 5 = gb.qt4.ext Komponente 6 = gb.eval Komponente 7 = gb.draw Komponente 8 = gb.geom Komponente 9 = gb.gui.base
Beispiel 2 – Einsatz eines abgeleiteten Arrays
Im Unterschied zum ersten Beispiel wird eine selbst geschriebene Klasse CDS verwendet. Die Array-Klasse CDS[ ] existiert eigentlich nicht. Da sie aber mit „[ ]“ endet und es eine Klasse CDS gibt, erstellt der Interpreter automatisch eine von CDS abgeleitete Klasse CDS[], die ein eindimensionales Array von 'CDS'-Objekten repräsentiert.
Quelltext CDS.Class
' Gambas class file ' Diese Klasse ist eine (reine) Datenstruktur ohne eigene Methoden. Public JGS As Integer Public GebDatum As Date Public Nachname As String
Quelltext FMain.class
[1] Public aKL As New CDS[] [2] [3] Public Function FillClassArray() As CDS[] [4] Dim hCDS As CDS [5] Dim myKL As New CDS[] [6] [7] hCDS = New CDS [8] hCDS.JGS = 12 [9] hCDS.GebDatum = Date(2004, 5, 19) [10] hCDS.Nachname = "Mayer" [11] myKL.Add(hCDS) [12] [13] hCDS = New CDS [14] hCDS.JGS = 11 [15] hCDS.GebDatum = Date(2005, 12, 19) [16] hCDS.Nachname = "Adler" [17] myKL.Add(hCDS) [18] [19] Return myKL [20] [21] End ' Function()
Kommentare: