Inhaltsverzeichnis
7.4.0 Arrays
7.4.0.1 Native Container-Klassen
Der Gambas-Interpreter bietet Ihnen zwei Arten von nativen Container-Klassen.
7.4.0.1.1 Collection
Eine Collection ist eine Sammlung von Elementen, die über einen Schlüssel vom Typ String indiziert werden → Kapitel 7.5 Collection. Nur Elemente vom Datentyp 'Variant' können in einer Collection gespeichert werden. Die Werte werden intern in einer Hash-Tabelle gespeichert, die dynamisch wächst, wenn mehr Elemente in sie eingefügt werden.
7.4.0.1.2 Array
Ein Array ist eine Menge von Elementen, die über einen Schlüssel vom Typ Integer indiziert werden und in einem Speicher-Block gespeichert sind. Alle Elemente in einem Array haben den gleichen Datentyp und es gibt eine Array-Klasse für jeden nativen Datentyp.
Arrays können ein- und mehrdimensional sein. Sind sie mehrdimensional, werden die Elemente von mehr als einem Integer-Wert indiziert. Wenn ein Array genau eine Dimension besitzt, dann kann es mit der Resize()-Methode dynamisch verkleinert oder erweitert werden.
Die Kapitel 7.4.0 bis 7.4.9 widmen sich nicht nur der allgemeinen Klasse Array mit seinen Eigenschaften und Methoden, sondern geben auch einen Ein- und Überblick zu den folgenden Themen, wobei die Reihenfolge keine Rangfolge impliziert:
- Native Arrays
- Abgeleitete Arrays
- Eindimensionale Arrays
- Mehrdimensionale Arrays (→ Dimensionen)
- Dynamisches Array
- Inline-Arrays
- Embeded-Arrays
- Deklaration von Arrays
- Einfügen von Elementen in ein Array
- Zugriff auf Elemente eines Arrays; eingeschlossen deren Anzeige
- Array-Kopie
- Export und Import von Arrays
- Konvertierung: Array ↔ Vektor
- Sortierung der Elemente eines Arrays
7.4.0.2 Klasse Array
Die Klasse Array (gb) ist die Eltern-Klasse für jede andere Array-Klasse. Ein Array ist als Daten-Container aufzufassen, auf dessen Elemente mit einem numerischen Schlüssel (Index) zugegriffen werden kann.
7.4.0.3 Eigenschaften der Klasse Array
Die Klasse Array (gb) verfügt über diese Eigenschaften:
| Eigenschaft | Datentyp | Beschreibung |
|---|---|---|
| Bounds | Array.Bounds | Es wird eine virtuelle Klasse zurückgegeben. Die Anzahl der Dimensionen eines Arrays wird durch die Eigenschaft Array.Bounds.Count angegeben und die Größe der N-ten Dimension kann man über Array.Bounds[N] abfragen. |
| Count | Integer | Anzahl der Elemente im Array. |
| Length | Integer | Anzahl der Elemente im Array. Die Eigenschaften Count und Length werden synonym verwendet. |
| Data | Pointer | Zeiger auf die Array-Daten. |
| Dim | Integer | Anzahl der Dimension eines Arrays. |
| Max | Integer | Größter Index eines Arrays. Dabei gilt: Array.Max = Array.Count - 1. |
| Type | Integer | Typ der Daten, die in ein Array eingefügt werden können → http://gambaswiki.org/wiki/cat/constant |
Tabelle 7.4.0.3.1: Eigenschaften der Klasse Array (gb)
7.4.0.4 Methoden der Klasse Array
Die Klasse Array (gb) verfügt über grundlegende Methoden und spezielle Methoden, die jedoch nicht für alle Array-Klassen zutreffen. Im nächsten Abschnitt werden die grundlegenden Methoden vorgestellt und beschrieben:
| Methode | Beschreibung |
|---|---|
| Clear() | Löscht alle Elemente in einem Array. |
| Remove ( Index As Integer [ , Length As Integer ] ) | Löscht ein oder mehrere Elemente in einem Array. |
| Resize ( Size As Integer ) | Ändert die Größe (Anzahl der Elemente) eines Arrays. |
Tabelle 7.4.0.4.1 : Methoden 1 der Klasse Array (gb)
Hinweise:
- Clear(): Löscht alle Elemente in einem eindimensionalen Array und Array.Count gibt danach 0 zurück. Wenn das Array mehrdimensional (→ Kapitel 7.4.4) ist, dann werden die Werte aller Array-Elemente – je nach Datentyp – auf den Default-Wert gesetzt.
- Remove(i,k): Löscht das Element mit dem angegebenen Index=i aus dem Array. Wenn auch der optionale Parameter Length=k mit k>0 gesetzt ist, werden k Elemente aus dem Array ab Array[i] gelöscht. Ist k negativ, dann werden alle Elemente Array[i..Max] im Array entfernt.
- Resize(s): Mit Array.Resize(s) bringt man die Anzahl der Elemente in einem Array auf die Anzahl=s. Die Anzahl der Elemente im Array wird so verkleinert oder vergrößert. Entweder werden überschüssige Elemente vom Ende entfernt oder zusätzliche Elemente angehängt – entsprechend dem Typ des Arrays mit ihrem Default-Wert bei nativen Arrays (→ Kapitel 7.4.3.1).
In der folgenden Tabelle steht 'Array-Typ' immer für den Daten-Typ eines Elements im Array.
7.4.0.5 Array-Klassen für native Datentypen
Gambas hat eine vordefinierte Array-Klasse für jeden nativen Datentyp → Kapitel 7.4.3.1. Der Name dieser Klassen ist der Name des Datentyps, dem eckige Klammern [] folgen.
Boolean[], Byte[], Short[], Integer[], Long[], Single[], Float[], Date[], String[], Object[], Pointer[] und Variant[]
Bitte beachten Sie die folgenden Hinweise, da nicht alle Arrays über alle u.a. Methoden verfügen:
- Für alle (nativen) Arrays – außer Variant[ ] – gibt es die Methode Sort([Mode As Integer]).
- Nur String[ ] hat die Methode Join( [ Separator As String, Escape As String ] ) .
- Für die nativen Arrays Boolean[ ], Byte[ ], Short[ ], Integer[ ], Long[ ], Single[ ], Float[ ], Date[ ], Pointer[ ] existieren die beiden Methoden Read( Stream As Stream [ , Start As Integer, Length As Integer ] ) und Write( Stream As Stream [ , Start As Integer, Length As Integer ] ).
- Die Methode ToString( [ Start As Integer, Length As Integer ] ) kennt nur Byte[ ].
- Nur bei den Arrays Object[ ] können Sie die beiden Methoden FindByRef( Value As Object [ , Start As Integer ] ) und ExistByRef( Value As Object ) einsetzen.
Arrays können über diese Methoden in der folgenden Tabelle verfügen:
Tabelle 7.4.0.5.1 : Methoden 3 der Klasse Array
