Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung

...powered by haas.homelinux.net...

Einstieg in VB.NET von René Martin
- Für Programmiereinsteiger -
Einstieg in VB.NET
gp Kapitel 2 Aufbauwissen VB.NET
  gp 2.1 Ein zweiter Dialog
  gp 2.2 Ein Süßigkeitenautomat
  gp 2.3 Eine Listbox
  gp 2.4 With ... End With
  gp 2.5 Die Liste
  gp 2.6 Eine ComboBox
  gp 2.7 Die Select-Case-Verzweigung
  gp 2.8 Ein theoretischer Exkurs: Ereignisse
    gp 2.8.1 Dynamisch ein- und ausblenden
    gp 2.8.2 Dynamische Größenänderung
  gp 2.9 Zwei völlig überflüssige Beispiele
  gp 2.10 Schleifen
  gp 2.11 For ... Next
  gp 2.12 Do ... Loop
  gp 2.13 Eine Schleife über den Süßigkeiten
  gp 2.14 Ein theoretischer Exkurs: Sammlungen oder Collections
  gp 2.15 Die For ... Each-Schleife
  gp 2.16 Schleifen spielerisch
    gp 2.16.1 Primzahlen
    gp 2.16.2 Fibonacci-Zahlen
    gp 2.16.3 ggT und kgV
    gp 2.16.4 Ein Scherz zum Schluss
  gp 2.17 Rekursives Programmieren
  gp 2.18 Arrays (Datenfelder)
    gp 2.18.1 Eindimensionale Arrays
    gp 2.18.2 Mehrdimensionale Arrays
  gp 2.19 Konstanten
  gp 2.20 Funktionen
  gp 2.21 Zusammenfassung


Galileo Computing

2.18 Arrays (Datenfelderdowntop

Im ersten Kapitel wurde beschrieben, was eine Variable ist und wie ein Wert an sie übergeben wird. Es stellt sich dabei die Frage, was zu tun ist, wenn viele Werte gespeichert werden sollen. Nicht nur, dass sehr viele Variablen deklariert werden müssten – manchmal weiß man zu Beginn eines Programms nicht, wie viele Variablen benötigt werden. Beispielsweise, wenn Dateinamen eines Ordners ausgelesen werden.


Galileo Computing

2.18.1 Eindimensionale Arrays  downtop

Wird eine Variable von Typ String so deklariert:

Dim strName As String

so wird ein Array (oder Datenfeld) folgendermaßen deklariert:

Dim strJahreszeiten(3) As String

Die Vermutung ist korrekt: Die Zählung beginnt bei 0! Gefüllt wird das Datenfeld so:

strJahreszeiten(0) = "Frühling"
strJahreszeiten(1) = "Sommer"
strJahreszeiten(2) = "Herbst"
strJahreszeiten(3) = "Winter"

Übrigens könnte man auch hier – wie bei den Variablen – die Werte bei der Deklaration füllen:

Dim strJahreszeiten(3) As String = _
{"Frühling",  "Sommer", "Herbst", "Winter"}

Wollte man noch einen weiteren Eintrag hinzufügen, so könnte man es mit:

ReDim strJahreszeiten(4)

Aber Achtung! Dadurch werden die anderen Werte gelöscht. Sollen sie erhalten bleiben, dann muss geschrieben werden:

ReDim Preserve strJahreszeiten(4)

Bei der Deklaration muss übrigens gar nicht angegeben werden, wie viele Werte das Array speichern soll:

Dim strListe()
ReDim Preserve strListe(4)

Das Preserve ist an dieser Stelle überflüssig. Im folgenden Beispiel allerdings nicht:

Dim strListe()
ReDim strListe(3)
strListe(0) = "Nord"
strListe(1) = "Süd"
strListe(2) = "Ost"
strListe(3) = "West"
ReDim Preserve strListe(4)
strListe(4) = "Mitte"

Nun gibt es allerdings einige Funktionen, die ein Array füllen, ohne dass bekannt ist, welches die Obergrenze ist. Die Eigenschaft Length ermittelt sie. Im oberen Beispiel könnte die Liste folgendermaßen ausgelesen werden:

Dim i As Integer
For i = 0 To strListe.Length -1
   MessageBox.Show(strListe(i))
Next

Achtung: Length ermittelt die Anzahl der Elemente. Da die Zählung allerdings bei 0 beginnt, muss die Schleife bis Length –1 hochzählen. Das folgende Beispiel verdeutlicht dies. Die Objektvariable objDateien wird als Array deklariert, dessen Anzahl der Elemente unbekannt ist. GetFiles füllt das Datenfeld. Dann können alle Elemente durchlaufen und verarbeitet werden:

Dim i As Integer
Dim objDateien() As System.IO.DirectoryInfo
objDateien = New DirectoryInfo("C:\Eigene Dateien"). _
   GetFiles()
For i = 0 To objDateien.Length - 1
   MessageBox.Show(ObjDateien(i).ToString)
Next

Übrigens könnte man die Obergrenze auch mit

objDateien.GetUpperBound(0)

bestimmen. Der Parameter 0 ist nötig, da es auch mehrdimensionale Arrays gibt. Er kennzeichnet, dass objDateien von der Dimension 1 ist.


Galileo Computing

2.18.2 Mehrdimensionale Arrays  toptop

Ein Array muss nicht nur eine Dimension haben, sondern kann auch mehrdimensional sein, theoretisch beliebig groß – in der Praxis kommen allerdings mehr als drei Dimensionen sehr selten vor. Ein zweidimensionales Array wird folgendermaßen deklariert:

Dim strNamen(1, 2) As String

Es kann dann wie folgt gefüllt werden:

strNamen(0, 0) = "Hans"
strNamen(0, 1) = "Clawdia"
strNamen(0, 2) = "Joachim"
strNamen(1, 0) = "Castorp"
strNamen(1, 1) = "Chauchat"
strNamen(1, 2) = "Ziemsen"

Solche Datenfelder kann man sich wie ein Schachbrett vorstellen – auf der einen Seite läuft ein Zähler von 0 bis 1, auf der anderen von 0 bis 2. Somit ergibt sich schnell eine große Anzahl von Variablen, die gefüllt werden können. Ausgelesen werden die Datenfelder normalerweise über Schleifen.

Ein Array kann mit Erase wieder geleert werden:

Erase strNamen

Das Gleiche leistet auch die Methode Clear.

Die folgende Tabelle zeigt die wichtigsten Methoden und Eigenschaften der Arrays:

Tabelle 2.1   Die wichtigsten Methoden der Datenfelder
Methode/Eigenschaft Beschreibung
Length Die Anzahl der Elemente eines eindimensionalen Arrays
Rank Die Gesamtzahl der Dimensionen
Clear leert die Datenfelder eines Arrays
Sort sortiert die Datenfelder
Reverse kehrt die Reihenfolge der Elemente um
IndexOf sucht nach dem Element und gibt den Index zurück
GetUpperBound gibt die Obergrenze an.
GetLowerBound gibt die Untergrenze an (in der Regel 0)
GetLength gibt die Anzahl der Elemente an
Copy kopiert die Elemente von einem Array in einen anderen
CopyTo kopiert die Elemente von einem eindimensionalen Array in einen anderen

  

VB.NET

Einstieg in ASP.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML