Anzahl der Elemente in einem Array

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Frank Lauer
***
Beiträge: 88
Registriert: Mi, 30.07.2003 18:06
Wohnort: Wiesloch

Anzahl der Elemente in einem Array

Beitrag 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.
OOo 2.1 , Win XP
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag 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
Frank Lauer
***
Beiträge: 88
Registriert: Mi, 30.07.2003 18:06
Wohnort: Wiesloch

Beitrag von Frank Lauer »

Danke für die schnelle Antwort! Genau das habe ich gesucht.
OOo 2.1 , Win XP
Frank Lauer
***
Beiträge: 88
Registriert: Mi, 30.07.2003 18:06
Wohnort: Wiesloch

Beitrag 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.)?
OOo 2.1 , Win XP
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag 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
Antworten