Array Length VB
Inhaltsverzeichnis
Array length VB
Du möchtest die Array Length in VB, also die Anzahl der Elemente, bzw. die Größe eines Arrays bestimmen?
Die Größe des Arrays ist in vielen Situationen wie z. B. das Durchlaufen mit einer Schleife relevant, lerne in diesem Beitrag, wie Du die Größe herausfindest!
Schaue Dir bei Bedarf doch gerne auch einige andere meiner Visual Basic Beiträge an: (folgen noch).
Was? Keine native Funktion?
Du hast leider richtig gelesen, wir haben in VB keine „native“ Möglichkeit, die Length des Arrays abzurufen.
Man kennt es eventuell aus dem .NET Umfeld, dass man einfach „.Length„, oder auch „.Count“ aufrufen kann, hier haben wir allerdings mehr oder weniger Pech.
Daher müssen wir uns wohl oder übel eine eigene Variante bauen, um die Length des Arrays herauszufinden.
Probleme – Array Length VB
Wer schon ein wenig mit Visual Basic gearbeitet hat, wird vermutlich die LBound und UBound Funktionen kennen.
Leider gestaltet sich die zum vermeintlich zum Ziel führende Arbeit damit nicht ganz einfach.
Daher zeige ich Dir hier einmal, wie man eventuell in eine kleine Falle tappen könnte.
Länge mit LBound und UBound erfassen
In diesem Abschnitt erstellen wir ein kleines, mit den beiden Funktionen arbeitendes Beispiel, die Länge des Arrays zu erfassen.
Schauen wir uns dafür einfach mal den folgenden Code an:
Dim arr arr = Array("First", "Second") Dim arrLength arrLength = UBound(arr) - LBound(arr) + 1 MsgBox(arrLength)
Code-Erklärung
Im ersten Schritt kündige ich eine Variable namens „arr“ an und setze im nächsten Schritt den Wert.
Danach deklariere ich eine Variable namens „arrLength“ wo wir gleich – oh Wunder – die Length des Arrays speichern werden.
Die Length des Arrays berechnet sich in unserem Beispiel aus dem Rückgabewert der „UBound„-Funktion minus den Rückgabewert der „LBound„-Funktion plus 1.
Ausgabe
Wenn Du Dir dann die Ausgabe der MsgBox ansiehst, wirst Du folgendes Fenster bekommen:
Nun scheint im ersten Moment alles richtig zu sein, jedoch nicht mehr, wenn Du Dir nun folgendes Beispiel ansiehst.
Hier verläuft erstmal alles analog zum Beispiel hier drüber, allerdings erweitern wir die Kapazität des Arrays, ohne einen tatsächlichen Wert in den neuen Index zu stecken.
Nicht ganz zufriedenstellend – Array Length VB
Das Array hat nun also eine theoretische Kapazität von 3 Elementen, jedoch sind nur 2 Elemente darin vorhanden.
Dim arr arr = Array("First", "Second") ReDim Preserve arr(2) Dim arrLength arrLength = UBound(arr) - LBound(arr) + 1 MsgBox(arrLength)
Die verbleibende Lösung
Die einzig uns verbleibende Lösung, um die Array-Länge festzustellen ist es, das Array manuell zu durchlaufen und das jeweilige Element auf z. B. „IsEmpty“ zu prüfen:
Dim arr arr = Array("First", "Second") ReDim Preserve arr(2) Dim arrLength For i = LBound(arr) To UBound(arr) If Not IsEmpty(arr(i)) Then arrLength = arrLength + 1 End If Next MsgBox(arrLength)
Somit bekommen wir auch in diesem letzten Beispiel, die korrekte Zahl, bzw. Länge 2 heraus.
Je nach Wunsch und Datentyp könnte man die Überprüfen natürlich noch anpassen, bzw. erweitern.