Gambas: Arrays
Zurück zu Gambas
Einfache Arrays
BearbeitenSiehe auch: http://www.madeasy.de/7/prgmini.htm#arr
Arrays sind Listen oder Tabellen, in die man zusammengehörige Texte oder Werte vom selben Dateityp abspeichert. Jedes Element des Arrays ist einzeln ansprechbar.
Beispiel eines Arrays: Liste von 5 Vornamen
- Anna
- Anton
- Toni
- Max
- Klaus
Um Arrays zu definieren, reicht kein einfaches Ist-Gleich-Zeichen, sondern man braucht eine besondere Deklaration: Um eine Namensliste , wie die obige, in Gambas zu bekommen, nimmt man am besten einen Stringarray (Textarray):
Beispiel:
PUBLIC SUB Form_Open() a AS String[] x AS Integer a = NEW String[] FOR x = 0 TO 4 a.Add(Str(x)) NEXT a[0] = "Anna" a[1] = "Anton" a[2] = "Toni" a[3] = "Max" a[4] = "Klaus" FOR x = 0 TO 4 PRINT a[x] NEXT END
Um dieses Beispielprogramm in Gang zu bringen brauchen Sie nur eine leere Form. Das Programm gliedert sich in 4 Teile:
- 1. Ein Stringarray wird deklariert.
a AS String[]
- 2.Der Stringarry wird initialisiert.
DIM x AS Integer a = NEW String[] FOR x = 0 TO 4 a.Add(Str(x)) NEXT
- 3.Der Stringarray wird mit echten Elementen gefüllt:
a[0] = "Anna" a[1] = "Anton" a[2] = "Toni" a[3] = "Max" a[4] = "Klaus"
- 4.Um zu Überprüfen, ob die Elemente wirklich im Array gespeichert wurden, werden sie dann wieder mit einer Schleife und dem Printbefehl im Direktfenster ausgegeben.
FOR x = 0 TO 4 PRINT a[x] NEXT
Das erscheint reichlich kompliziert oder was meinen Sie ? Es geht auch etwas einfacher, wenn man den Array Befehl nutzt. Dies ist im nächsten Kapitel beschrieben.
Erstaunlicherweise funktioniert das obige Programm nur im Grafikmodus. Aber vielleicht fehlt mir auch nur ein Trick um es im Terminalmodus zu ermöglichen. Außerdem ist die Deklaration ziemlich umständlich. a = NEW String[5] funktioniert nicht.
Man kann die einzelnen Elemente über ihre Position im Array ansprechen, wobei das erste Element die Position 0 hat:
Benennung der Einträge
a[0] = "Anna" a[1] = "Anton" a[2] = "Toni" a[3] = "Max" a[4] = "Klaus"
Um den Namen Max ausgeben zu lassen, muß man dann schreiben:
print a[3]
Beachten Sie bitte das a kein Element von Gambas ist , sondern oben im Beispielprogramm als Array definiert wurde.
Die eckigen Klammern sind hier nicht wie üblich bei Computertexten optionale Angaben, sondern man muß bei Arrays wirklich eckige Klammern verwenden.
Der Index eines Arrays beginnt immer bei 0, somit ergeben sich die gültigen Indizes bei einem Array der Größe n: 0, 1, 2, ..., n-1.
Der Umgang mit Arrays ist für Anfänger sehr gewöhnungsbedürftig. Trotzdem lohnt es sich, sich mit den verschiedenen Arten und Programmiermöglichkeiten von Arrays vertraut zu machen, denn sie machen die Programme übersichtlicher und kürzer. Insbesondere bei der Programmierung von Datenbanken oder Tabellen sind Arrays unverzichtbar.
Neben dem hier gezeigten Stringarray kann man auch für jeden anderen Dateityp ein Array definieren. Es gibt also Binärarrays, Textarrays, Ganzzahlenarrays, Arrays für Fließkommazahlen etc etc. Sogar für zusammengesetzte Dateitypen wie zb Objekte kann man Arrays verwenden.
Die Elemente eines Arrays haben dabei alle denselben Dateityp. Will man auch noch den Dateityp in der Liste variieren, dann muß man statt eines Arrays eine Collection heranziehen.
Schneller füllen mit dem Arraybefehl
BearbeitenDer Arraybefehl verkürzt das obige Programm enorm. Mit ihm kann man ein Array viel schneller füllen.
Wie das geht zeigt folgendes Beispiel. Sie brauchen nur eine leere Form um es in Gang zu bringen:
PUBLIC SUB Form_Open() x AS Integer a AS String[] a = Array("Anna","Anton","Toni","Max","Klaus") FOR x = 0 TO 4 print a[x] 'Ausgabe des Arrays im Direktfenster NEXT END
Wollen Sie die Ausgabe nicht in das Direktfenster umleiten, dann fügen Sie Ihrer Form eine Textarea hinzu und ändern den Code folgendermassen:
PUBLIC SUB Form_Open() x AS Integer a AS String[] a = Array("Anna","Anton","Toni","Max","Klaus") Textarea1.Text = "" FOR x = 0 TO 4 Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT END
Das Zeichen chr(10) fügt einen Zeilenwechsel zwischen die Namen. Mit Textarea1.Text = "" wird die Textarea am Start gelöscht.
Einfache Arrayroutinen
BearbeitenErzeugung
BearbeitenEs soll ein Integer Array mit 20 Elementen erzeugt werden. Dazu nutzen sie folgende Zeile:
feld [20] AS Integer
Etwas umständlicher geht das auch so:
feld AS NEW Integer[] i AS Integer FOR i = 0 TO 19 feld.Add(i) NEXT
Zu beachten ist jedoch, das jeder Array mit [0] beginnt. So ist das letzte Element feld[19] (0 bis 19 = 20 Elemente). Laut der Deklaration feld [20] AS Integer wäre zu vermuten, das auch das Element feld[20] einen Wert hat. Das stimmt aber nicht, es liegt bereits außerhalb der Deklaration (out of Bound).
Operationen mit Elementen
BearbeitenMit Arrayelementen können alle Operationen wie gewohnt ausgeführt werden. Beispiel:
feld[2] = 77 feld[3] = feld[2] - 7
Die erste Zeile weist dem 3. (dritten!) Element des Arrays die Zahl 77 zu. Die zweite Zeile weist dem 4. (vierten!) Element des Arrays die Zahl 77 - 7 = 70 zu.
Index
BearbeitenAls Index kann eine Variable oder Konstante angegeben werden:
n as integer n = 1 feld[n] = 25
Dieser Code weist dem n-ten Element (dem 2.) den Wert 25 zu.
Als Programm:
PUBLIC SUB Form_Open() feld[4] AS Integer n AS Integer feld[2] = 77 feld[3] = feld[2] - 7 n = 1 feld[n] = 25 FOR n = 0 TO 3 PRINT feld[n] NEXT END
Ausgabe im Direktfenster:
0 25 77 70
Wenn Sie print feld[4] eingeben, erscheint die Fehlermeldung: Out of bounds
Probieren sie noch einmal folgende Variante, dann wird es vielleicht klarer:
PUBLIC SUB Form_Open() feld[4] AS Integer 'Deklariert das Zahlenarry feld[0 bis 3] !!! n AS Integer feld[2] = 77 feld[3] = feld[2] - 7 n = 1 feld[n] = 25 FOR n = 0 TO 3 PRINT "feld[" & n & "] = " & feld[n] NEXT 'PRINT feld[4] ergibt einen Fehler !!! END
Mehrere Dimensionen
BearbeitenWeiterhin können Arrays mit mehr als einer Dimension erzeugt werden.
schachbrett[10, 10] AS Integer
Erzeugt ein 2-Dimensionales Integer-Feld der Größe 10 x 10.
Als Programmbeispiel:
PUBLIC SUB Form_Open() i AS Integer n AS Integer schachbrett[10, 10] AS Integer FOR i = 0 TO 9 FOR n = 0 TO 9 PRINT i, n schachbrett[i, n] = i*10 + n PRINT schachbrett[i, n] NEXT NEXT END
Fehler mit Arrays
BearbeitenBeispiel 2:
In diesem Beispiel wird ein Stringarray definiert und am Anfang mit fortlaufenden Zahlen gefüllt. Dabei entspricht die jeweilige Zahl der Position im Array. Bei der zweiten Füllung des Arrays ist das nicht mehr der Fall. Jetzt ist das Array mit Quadratzahlen gefüllt worden.
Um das Programm in Gang zu bringen , brauchen Sie 2 Befehlsbuttons und ein Textlabelfeld.
ar AS String[] 'Der array wir als String definiert PUBLIC SUB Button1_Click() ' Der Array wird ausgegeben i AS Integer txt AS String ar = NEW String[] FOR i = 0 TO 3 ar.Add(Str(i)) NEXT FOR i = 0 TO 3 txt = txt & ar[i] NEXT TextLabel1.Text = txt END PUBLIC SUB Button2_Click() 'Der array wird neu gefüllt a AS Integer i AS Integer txt AS String ar = NEW String[] FOR a = 0 TO 3 ar.Add(Str(a*a)) NEXT FOR i = 0 TO 3 txt = txt & ar[i] NEXT TextLabel1.Text = txt END
Auch diese Programm können Sie mit dem Arraybefehl verkürzen:
ar AS Integer[] 'Der array wir als Zahlenliste definiert PUBLIC SUB Button1_Click() 'Der Array wird gefüllt und ausgegeben i AS Integer txt AS String ar = Array(0,1,2,3) FOR i = 0 TO 3 txt = txt & ar[i] NEXT TextLabel1.Text = txt END PUBLIC SUB Button2_Click() 'Der array wird mit den Quadratzahlen der ersten Füllung erneut gefüllt a AS Integer i AS Integer txt AS String ar = Array(ar[0]^2,ar[1]^2,ar[2]^2,ar[3]^2) FOR i = 0 TO 3 txt = txt & ar[i] NEXT TextLabel1.Text = txt END
Vorsicht! Diese Programm funktioniert nur einmal richtig. Beim zweiten Programmlauf erfolgt eine Fehlermeldung.
Type mismatch: Wanted Integer[], got float[] instead.
Die Schachtelung des Arrays ist also fehlerträchtig:
ar = Array(ar[0]^2,ar[1]^2,ar[2]^2,ar[3]^2)
Als Übung können Sie ein Array aller kleinen Buchstaben des Alphabets aufstellen:
Beispiel 3: Ein 3-dimensionales Array
Um das Programm in Gang zu bringen brauchen Sie eine Form und einen Befehlsbutton.
PUBLIC SUB Button1_Click() DIM i AS Integer DIM ii AS Integer DIM iii AS Integer DIM Matrix[3, 3, 3] AS Integer FOR i = 0 TO 2 FOR ii = 0 TO 2 FOR iii = 0 TO 2 PRINT i, ii , iii Matrix[i, ii, iii] = i*9 + ii*3 + iii PRINT Matrix[i, ii, iii] NEXT NEXT NEXT END
Split >> Zerlegt einen Text in ein Stringarray mit lauter einzelnen Elementen
BearbeitenDer Befehl Split zerlegt einen Textstring in kleine Textteile, die durch ein bestimmtes Trennzeichen abgegrenzt sind.
Die Syntax des Befehls lautet:
Array = Split ( Text [ , Trennzeichen , Nichttrennen ] )
Benutzt man den Befehl ganz einfach nur mit der Angabe für Text, dann wird als Trennzeichen das Komma verwendet.
Array = Split(Text)
Will man einen Satz beispielsweise in seine Wörter trennen, dann benutzt man folgende Variante:
Array = Split(Satz," ")
Wenn man mehrere verschiedene Trennzeichen verwenden will ( zb Komma und Punkt) dann muss man diese als zweiten Parameter übergeben zusammengefügt zu einem einzigen String.
Will man bestimmte Bereiche nicht trennen , dann kann man ein Nichttrennenzeichen angeben. Alles was zwischen zwei Nichttrennenzeichen steht ( zb in Anführungsstrichen ) wird nicht zerlegt.
Für das Nichttrennenzeichen gibt es keine Voreinstellung. Man muß es immer explizit eingeben.
Die Splitfunktion liefert einen Stringarray ( = eine Wörterliste) zurück, der jeweils mit den einzelnen zerlegten Elementen gefüllt wurde.
Beispiel: Sie brauchen einen Befehlsknopf, um das Beispiel in Gang zu bringen.
PUBLIC SUB Button1_Click() e AS String[] s AS String e = Split("Gambas Almost Means BASIC !", " ") FOR EACH s IN e PRINT s NEXT End
Ausgabe:
Gambas Almost Means BASIC !
Versuchen Sie einmal dasselbe Programm mit dem Trennzeichen a. Als Ausgabe erhalten Sie dann:
G mb s Almost Me ns BASIC !
Das Trennzeichen wird also nicht in die Elemente des Arrays mit aufgenommen.
Der Splitbefehl ist sehr praktisch und kann in einer Vielzahl von Programmen gut verwendet werden. Beispiel finden sich in Gambas: Statistik
Join Der Befehl zum zusammenfügen
BearbeitenDer Befehl klebt eine Liste wieder zusammen. Er ist das Gegenteil des Splitbefehls.
For each
BearbeitenMit For each werden alle Einträge eines Arrays einer anderen Variable zugewiesen, die man dann ausgeben kann.
Beispiel: Sehr beliebt ist Addy der Summierer. Auch er nutzt einen Stringarray.
Sie brauchen eine Textarea, eine Textbox und einen Commandbutton um das Programm zu starten.
PUBLIC SUB Button1_Click() DIM text AS String DIM summe AS Float DIM liste AS String[] DIM posten AS String text = textarea1.Text liste = Split(text,Chr(10)) FOR EACH posten IN liste summe = summe + Val(posten) NEXT textbox1.Text = summe END
Geben Sie in die Textarea ein paar Zahlen und dazwischen Return ein. Dann drücken Sie auf die Befehlstaste. Die Zahlen werden zusammengezählt. Die Liste in der Textarea kann beliebig korrigiert werden. Auch negative Zahlen werden verarbeitet.
Vorsicht: Geben Sie keine Buchstaben oder Sonderzeichen ein. So robust ist Addy noch nicht.
Arrayroutinen Add,Remove,Resize,Revert,Clear, Sort
BearbeitenGambas bringt für alle seine Arrayarten eine Reihe von sehr nützlichen Routinen mit.
Arrayroutinen
Bearbeiten- Add
- ein Element am Ende hinzufügen oder an einer Position einfügen
- Remove
- ein Element am Ende wegnehmen oder an einer definierten Position wegnehmen
- Revert
- Reihenfolge umdrehen
- Resize
- Dem Array eine neue Größe geben
- Clear
- Alle Elemente weglöschen
- Sort
- In aufsteigender oder absteigender Reihenfolge sortieren
Wie die Arrayroutinen funktionieren, zeigt das folgende Programm.
Sie brauchen
Bearbeiten- 11 Buttons
- 4 Textboxen
- 1 Textarea
um das Programm in Gang zu bringen.
Layout
BearbeitenCode
BearbeitenPUBLIC a AS String[] PUBLIC SUB Form_Open() x AS Integer a = Array("Anna","Anton","Toni","Max","Klaus") Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT Textbox1.Text = "Franz" Button1.Text = "Hinzufügen" Button2.Text = "Einfügen" Textbox2.Text = "2" Textbox3.Text = "2" Textbox4.Text = "3" ME.Text = "Arraybefehle" END
PUBLIC SUB Button1_Click() x AS Integer a.Add(Textbox1.Text) Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) 'Die Länge des Array wird von 1 an gezählt, die Position von 0 an Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT END
PUBLIC SUB Button2_Click() x AS Integer a.Add(Textbox1.Text,Val(Textbox2.Text)) Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT END
PUBLIC SUB Button3_Click() x AS Integer a.Sort(0) Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT END
PUBLIC SUB Button4_Click() x AS Integer a.Sort(16) Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT END
PUBLIC SUB Button5_Click() x AS Integer a.clear Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT END
PUBLIC SUB Button6_Click() x AS Integer a.resize(8) Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT END
PUBLIC SUB Button7_Click() x AS Integer a.reverse Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT END
PUBLIC SUB Button8_Click() x AS Integer a.remove(Val(textbox3.text),Val(textbox4.text)) Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT END
PUBLIC SUB Button9_Click() ME.Close END
PUBLIC SUB Button10_Click() x AS Integer a = Array("Anna","Anton","Toni","Max","Klaus") Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT END
PUBLIC SUB Button11_Click() text AS String posten AS String text = textarea1.Text a = Split(text,Chr(10)) FOR EACH posten IN a NEXT END
Man kann dieses Programm vereinfachen, wenn man die Arrayausgabe in der Textarea in eine Subroutine packt, denn sie kommt immer wieder vor.
x as integer Textarea1.Text = "" FOR x = 0 TO (a.Length - 1) Textarea1.Text = Textarea1.Text & a[x] & Chr(10) NEXT
Übrigens: Für das Array Object[] funktiert das Sortieren noch nicht.
Array mit Zufallszahlen füllen
BearbeitenMan kann ein Array auch mit Zufallszahlen füllen , um beispielsweise Algorithmen zum Sortieren zu testen.
Wie das geht zeigt folgendes Miniprogramm. Sie brauchen dazu eine Form und einen Befehlsbutton. Das Array wird bereits beim Laden der Form erzeugt und gefüllt. Drückt man auf den Befehlsknopf, wird das Array im Direktfenster ausgegeben.
Es werden 6 Zufallszahlen zwischen 1 und 10 erzeugt und in den Array eingelesen.
Einige Ungereimtheiten ergeben sich hier noch bei der Benennung der Arrays ( siehe Programmkommentare) Außerdem erkennt man jetzt auch den Vorteil, daß es 2 Methoden der Array Füllung gibt.
' Gambas class file ar AS Float[] 'warum gibt es eine Fehlermeldung , 'wenn man das Array mit Integer[] festlegt. PUBLIC SUB Form_Open() Randomize() ar = Array(Int(Rnd(1,10)) , Int(Rnd(1,10)) , Int(Rnd(1,10)) , Int(Rnd(1,10)) , Int(Rnd(1,10)) , Int(Rnd(1,10))) END PUBLIC SUB Button1_Click() element AS Integer FOR EACH element IN ar PRINT element NEXT END
Alternative:
ar AS Integer[] 'Obwohl der Array als Integerarray definiert ist, 'funktioniert er weiter unten als Stringarray Wieso ? PUBLIC SUB Form_Open() x AS Integer ar = NEW Integer[] FOR x = 0 TO 10 ar.Add(Str(x)) NEXT END PUBLIC SUB Button1_Click() x AS Integer Randomize() FOR x = 0 TO 10 ar[x] = Int(Rnd(1,10)) NEXT END PUBLIC SUB Button2_Click() element AS Integer FOR EACH element IN ar PRINT element; NEXT PRINT END
Wieviel Elemente hat der Array ? Warum so viele ? Probieren Sie das Programm einmal ohne den Randomize Befehl, dann erkennen Sie seine Notwendigkeit.
Lottozahlen ( 7 aus 49 )
BearbeitenDas folgende Programm erzeugt sieben Lottozahlen , wirft Doppelgänger heraus und gibt die Zahlen sortiert aus: Genutzt wird dabei ein Array mit 49 Elementen.
Zunächst wird das Programm in seine Einzelteile zerlegt und auf 4 Comanndbuttons gelegt.
- Commandbutton1 >> Array mit 7 Zufallszahlen
- Commandbutton2 >> Kompletten Array über Print ausgeben
- Commandbutton3 >> Nur die Elemente ausgeben, die ungleich Null sind
- Commandbutton4 >> Kompletten Array wieder mit Nullen füllen.
ar AS Integer[] PUBLIC SUB Form_Open() 'schon beim Öffnen der Form wird der Array mit lauter Nullen gefüllt. x AS Integer ar = NEW Integer[] FOR x = 0 TO 48 ar.Add(Str(0)) NEXT END PUBLIC SUB Button1_Click() 'dann wird der Array mit 7 Zufallszahlen an den Stellen gefüllt, die mit der Zufallszahl übereinstimmen x AS Integer r AS Integer Randomize() FOR x = 0 TO 6 r = Int(Rnd(1,49)) IF r = ar[r] THEN x = x - 1 'Falls ein Doppelgänger auftritt gehe eins zurück ar[r] = r NEXT END PUBLIC SUB Button2_Click() 'zu Testzwecken wird das ganze Array ausgegeben element AS Integer FOR EACH element IN ar PRINT element NEXT END PUBLIC SUB Button3_Click() 'jetzt werden nur noch die Elemente ausgegeben , die ungleich 0 sind element AS Integer FOR EACH element IN ar IF element <> 0 THEN PRINT element NEXT END PUBLIC SUB Button4_Click() 'der Array wird wieder komplett auf Null gestellt x AS Integer FOR x = 0 TO 48 ar[x] = 0 NEXT END
Nachdem man das Programm in einzelne Schritte zerlegt hat, kann man es jetzt auf einen einzigen Button zusammenfassen. Und die Zusatzzahl fehlt natürlich noch.
' Gambas class file Lottozahlen ar AS Integer[] PUBLIC SUB Form_Open() 'schon beim Öffnen der Form wird der Array mit lauter Nullen gefüllt. x AS Integer ar = NEW Integer[] FOR x = 0 TO 48 ar.Add(Str(0)) NEXT END PUBLIC SUB Button1_Click() x AS Integer r AS Integer element AS Integer 'der Array wird komplett auf Null gestellt FOR x = 0 TO 48 ar[x] = 0 NEXT 'dann wird der Array mit 7 Zufallszahlen an den Stellen gefüllt, die mit der Zufallszahl übereinstimmen Randomize() FOR x = 0 TO 6 r = Int(Rnd(1,49)) IF r = ar[r] THEN x = x - 1 'Falls ein Doppelgänger auftritt gehe eins zurück ar[r] = r NEXT 'nur die Zahlen <> 0 werden ausgegeben FOR EACH element IN ar IF element <> 0 THEN PRINT element NEXT END
Überlegen Sie einmal warum die Elemente des Arrays zweimal auf Null gestellt wurden. Wenn Sie es nicht wissen, dann werfen Sie doch die eine Schleife heraus und probieren Sie das Programm ein paar Mal aus. Dann erkennen Sie die Notwendigkeit, wenn man mehrfach den Befhelsbutton drückt.
Doppelgänger aus dem Array herauswerfen
BearbeitenHierfür wir ein temporäres Array erstellt und die Elemente kopiert die im neuen temporären Array noch nicht vorhanden sind.
Beispiel als Funktion:
PUBLIC FUNCTION RemoveDuplicates(sArray AS String[]) AS String[] DIM s AS String DIM tempArray AS NEW String[] FOR EACH s IN sArray IF tempArray.Find(s) = -1 THEN tempArray.Add(s) NEXT RETURN tempArray END
Aufruf mit:
... RemoveDuplicates(Array) ...
Theorie
Bearbeiten.Array Diese virtuelle Klasse ist die Eltern Klasse jedes anderen Gambas arrays.
Diese Klasse ist virtuell. Man kann sie nicht als Datentyp benutzen. Sie ist nicht erzeugbar (creatable. ).
Eigenschaften:
- Count (identisch mit Length)
- Length
Methoden
- Add
- Clear
- Remove
- Resize
- Reverse
- Sort
Arten von Arrays
BearbeitenArrays sind in Gambas meist an den eckigen Klammern zu erkennen: []
Mit der Schnellmethode über den Arraybefehl können Sie aber auch mit runden Klammern () definiert werden.
Wenn Sie nicht wissen, was für eine Art von Array sie definiert haben, dann lassen Sie sich die Art des Arrays im Direktfenster ausgeben. Wenn man sein Array mit dem Arraybefehl gefüllt hat, dann wird der Typ des Arrays durch das erste Element definiert. Die anderen Elemente werden automatisch zum selben Typ umgewandelt.
Mit Join kann man die Elemente des Arrays bei der Ausgabe trennen
Beispiel:
PUBLIC SUB Form_Open() ar AS Integer[] ar = Array(3,3,3) PRINT Object.Type(ar) END
Ausgabe: Integer[]
PRINT Object.Type(Array("2.4", 3, 3.2))
Ausgabe: String[]
PRINT [ "A", "B", "C" ].Join("/")
Ausgabe A/B/C
Zweidimensionales Array anlegen
BearbeitenSiehe Gambas: Tabelle
Array Routinen
Bearbeiten- Zweidimensionale Felder anlegen
- Ein Boolean-Array
- Anzahl der Dimensionen eines Arrays bestimmen
- Arrays dynamisch vergrößern
- FAQ - Oft gestellte Fragen über Arrays
- Element in Array suchen
- Schnelles Einfügen und Löschen
- Arrayinhalte schnell mischen
- Schnelle Sortierung mit QuickSort und MinSort
Stoffsammlung und Fragen zu Arrays
BearbeitenWill man die einzelnen Einträge durch ein Zeichen trennen, geht das normalerweise mit der Join Methode.
Hinzufügen von Einträgen
Wie kann man Einträge in ein Array hinzufügen ?
Zählen der Einträge
Wie erfolgt das Zählen der Einträge ? ( Length Eigenschaft )
PRINT a.Count
Einträge durchsuchen
Wenn man ein Array nach einem Eintrag durchsuchen will, geht das so:
Array.Find(SuchWert)
Sortieren der Einträge
Wie kann man Arrays sortieren ?
Array.Sort
Wie kann man nach den Namen der Werte sortieren lassen ? Wie kann man die Elemente in Ihrer Reihenfolge umdrehen ?
Array.Reverse