Seite 1 von 1

Anzahl der Elemente in einem Array

Verfasst: Fr, 25.03.2005 11:57
von Frank Lauer
Hallo zusammen,

wie kann ich herausfinden wieviel elemente ein Array enthält?

Manche Methoden und Funktionen des UNO geben mir ja Arrays zurück (z.B. das Dialogelement Listbox über die Methode "DelectedItemsPosition(Array of String,Boolean)). Ich weis jedoch nicht wieviele elemente in diesem Array drin sind (zum Beispiel wieviele Elemente in der Listbox markiert sind). Wenn ich dann Element für Element durchlaufe bekomme ich irgenwann eine Fehlermeldung wenn ich über das letzte Element hinausschieße.

Das Ganze könnte man natürlich mit einem Errohandler in den Griff bekommen, wäre aber schön wenn es eine Funktion gäbe.

Verfasst: Fr, 25.03.2005 13:47
von Stephan
wie kann ich herausfinden wieviel elemente ein Array enthält?

Das ist ein bißchen philosopisch in sofern es um die Anzahl der Elemente geht (weil ja Element möglicherweise Inhalt meint), Du kannst jedoch die Größe des Arrays ermitteln, dafür gibt es:

LBound und UBound

siehe Onlinehilfe von OOo.
Du müßtest dann noch prüfen ob jede "Zelle" des Arrays auch tatsächlich mit Inhalt belegt ist.


Gruß
Stephan

Verfasst: Fr, 25.03.2005 15:23
von Frank Lauer
Danke für die schnelle Antwort! Genau das habe ich gesucht.

Verfasst: So, 27.03.2005 16:43
von Frank Lauer
Hm, jetzt stehe ich vor dem nächsten Problem. Kann man auch irgenwie herausfinden, was für eine Dimension der Array hat (Array(x) => 1 Array(x,y) =>2 usw.)?

Verfasst: So, 27.03.2005 18:54
von Stephan
Hm, jetzt stehe ich vor dem nächsten Problem. Kann man auch irgenwie herausfinden, was für eine Dimension der Array hat (Array(x) => 1 Array(x,y) =>2 usw.)?
Du kannst bei LBOUND() und UBOUND() die Dimension des Arrays angeben, fasse also eines der beiden in eine Schleife und zähle die Dimension hoch. Sobald die zu groß wird gibt es einen Fehler, fange diesen ab und ermittle den aktuellen Zählerwert der Schleife. Dieser Wert minus 1 ist die Dimension des Arrays.

ohne Feinheiten also prinzipiell so:

Code: Alles auswählen

...
On Error Goto z
x = 0
Do
   x = x + 1
   a = LBOUND(arrayname(),x)
Loop

z:
dimension = x - 1
...

Gruß
Stephan