Graphics Reference
In-Depth Information
seiner Ordnung normalerweise Speicherplatz erst zur Laufzeit zuweist (mit ReDim ),
sollten man vermeiden, feste Arraydimensionen zu früh zu deklarieren, und niemals
größer als unbedingt erforderlich.
ReDim Ganz4(99) ' 1-dim. Array mit 100 Elementen
Wenn für eine der Dimensionen 1 angeben wird, enthält das Array keine Elemen-
te. Mit einer ReDim -Anweisung kann man ein Array, das bereits formal deklariert
wurde, von leer auf nichtleer umstellen und umgekehrt. Obwohl die Größe eines
Arrays mit ReDim geändert werden kann, ist die Anzahl seiner Dimensionen und
auch sein Datentyp unveränderlich. Im folgenden Beispiel wird ein dreidimensio-
nales Array deklariert.
Dim Point(,,)AsDouble
Durch die ReDim -Anweisung kann zwar die Größe jeder Dimension festgelegt oder
geändert werden, das Array behält jedoch die ursprüngliche Dimension, hier also
3-dimensional.
ReDim gibt das alte Array frei und initialisiert ein neues mit derselben Dekla-
ration. Bei Verwendung des Preserve -Schlüsselworts kopiert VB.Net die Elemente
aus dem bestehenden in das neue Array. Mit Preserve kann nur die Größe der
letzten Dimension geändert werden. Für alle anderen Dimensionen muss die neue
Größe der Größe des alten Arrays entsprechen. Wenn das Array z. B. nur eine Di-
mension hat, lässt sich die Größe dieser Dimension ändern und bei Verwendung
von Preserve bleibt sein Inhalt dennoch erhalten.
Mit diesen Hinweisen wird klar, dass ReDim keinesfalls innerhalb von Schlei-
fen verwendet werden darf. Im folgenden Beispiel wird das oben schon verwendete
Array Knoten() mit Daten aus einer Datei gefüllt werden. Da die genaue An-
zahl nicht bekannt ist, wird das Array nach jedem gelesenen Datensatz mit ReDim
vergrößert. Das aber führt zum permanenten Umspeichern des ganzen Arrays und
muss unter allen Umständen vermieden werden.
Private Sub zuReDim()
Dim TextLine As String
Dim Anzahl, neuNum As Integer
Dim neuX, neuY, neuZ As Single
FileOpen(12, "Daten.txt", OpenMode.Input)
' Open Datei
Anzahl = -1
Do Until EOF(12) ' wiederholen bis EOF
TextLine = LineInput(12) ' 1 Datensatz lesen
' Werte aus TextLine auslesen: neuNum, X, Y, Z
' dann Knoten() ergänzen
Anzahl = Anzahl + 1
ReDim Preserve Knoten(Anzahl)
With Knoten(Anzahl)
.Num = neuNum
' diverse Daten in Knoten-Array
.x = neuX
.y = neuY
.z = neuZ
End With
Search WWH ::




Custom Search