You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@openoffice.apache.org by Horst <te...@jrsch.de> on 2016/02/22 12:30:19 UTC
Dimensionen von Arrays prüfen
Hallo,
ich habe mir folgende Function gebastelt:
function isInArray(afeld as variant,stext as variant) as integer '*ist
stext in afeld?
'jetzt kann das Feld aber ein- oder mehrdimensional vorliegen. Wie kann
ich das prüfen?
ibound2=ubound(afeld(),2) gibt eine Fehlermeldung bei einem
eindimensionalen Feld
Gibt es so eine Funktion irgendwo vordefiniert?
Horst
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org
Re: Dimensionen von Arrays prüfen
Posted by Horst <te...@jrsch.de>.
Hallo Jochen,
danke für die Antwort. Ich habe jetzt gemerkt, dass es zwei Arten von
mehrdimensionalen Arrays gibt.
mit
dim afeld (4,5)
erstellte Arrays funktionieren bei beiden nicht richtig.
Bei deinem ersten Beispiel kommt die Fehlermeldung, dass die Dimensionen
nicht passen. Das Problem hatte ich auch schon gefunden.
Bei dem zweiten Beispiel wird als Dimension 1 rausgegeben.
Trotzdem hilfreich. Danke.
Horst
Am 22.02.2016 16:54, schrieb Jochen Nitschke:
> Hallo Horst,
> ..
dim afeld (4,5)
> If IsArray(afeld) Then
> If IsArray( afeld( LBound(afeld) ) Then
Fehler Dimensionen passen nicht
> ' zweidimensional
> Else
> ' eindimensional
> End If
> Else
> ' Abbruch: afeld kein Array
> End If
>
> Wenn du wissen willst wie viele Dimensionen ein Array hat brauchst du
> eine kleine rekursive Funktion:
> Function NumberDims(B as Variant, optional DontUseThisVar as boolean) as
> Integer
> If IsMissing(DontUseThisVar) Then
> NumberDims = 0
> End If
> If IsArray(B) Then
> NumberDims = NumberDims(B(LBound(B)), DontUseThisVar) + 1
> End If
> End Function
>
> Sub TestNumberOfDimensions
> A= Array(Array("A1","B1"),Array("A2","B2"))
> B= Array("Text A", "Text B")
> C= "Just a string."
dim c(4,5)
> Print "A has " + NumberDims(A) + " dimensions"
> Print "B has " + NumberDims(B) + " dimensions"
> Print "C has " + NumberDims(C) + " dimensions"
gibt 1- sollte 2 sein.
> End Sub
>
>
> Grüße Jochen
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org
Re: Dimensionen von Arrays prüfen
Posted by Jochen Nitschke <j....@ok.de>.
Hallo Horst,
On Mon, 22 Feb 2016 12:30:19 +0100 Horst wrote:
> Hallo,
>
> ich habe mir folgende Function gebastelt:
>
> function isInArray(afeld as variant,stext as variant) as integer '*ist
> stext in afeld?
> 'jetzt kann das Feld aber ein- oder mehrdimensional vorliegen. Wie
> kann ich das prüfen?
> ibound2=ubound(afeld(),2) gibt eine Fehlermeldung bei einem
> eindimensionalen Feld
>
> Gibt es so eine Funktion irgendwo vordefiniert?
>
Ich kenne keine Funktion die so etwas liefert. Du kannst aber mit
IsArray prüfen ob dein Variant ein Array ist.
Dann machst du 2 verschachtelte Abfragen:
If IsArray(afeld) Then
If IsArray( afeld( LBound(afeld) ) Then
' zweidimensional
Else
' eindimensional
End If
Else
' Abbruch: afeld kein Array
End If
Wenn du wissen willst wie viele Dimensionen ein Array hat brauchst du
eine kleine rekursive Funktion:
Function NumberDims(B as Variant, optional DontUseThisVar as boolean) as
Integer
If IsMissing(DontUseThisVar) Then
NumberDims = 0
End If
If IsArray(B) Then
NumberDims = NumberDims(B(LBound(B)), DontUseThisVar) + 1
End If
End Function
Sub TestNumberOfDimensions
A= Array(Array("A1","B1"),Array("A2","B2"))
B= Array("Text A", "Text B")
C= "Just a string."
Print "A has " + NumberDims(A) + " dimensions"
Print "B has " + NumberDims(B) + " dimensions"
Print "C has " + NumberDims(C) + " dimensions"
End Sub
Grüße Jochen
Re: Dimensionen von Arrays prüfen
Posted by Horst <te...@jrsch.de>.
Hallo Oliver,
Vielen Dank, die Seite ist sehr hilfreich.
Horst
Am 22.02.2016 18:27, schrieb Oliver Brinzing:
> Hallo Horst,
>
>> function isInArray(afeld as variant,stext as variant) as integer
>> '*ist stext in afeld?
>> 'jetzt kann das Feld aber ein- oder mehrdimensional vorliegen. Wie
>> kann ich das prüfen?
>> ibound2=ubound(afeld(),2) gibt eine Fehlermeldung bei einem
>> eindimensionalen Feld
>
> schau mal hier nach:
> http://cereusapis.com/array-dimensions-in-openoffice-basic/
> Da steht einiges zu Array...
>
> Gruß
> Oliver
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
> For additional commands, e-mail: users-de-help@openoffice.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org
Re: Dimensionen von Arrays prüfen
Posted by Oliver Brinzing <Ol...@gmx.de>.
Hallo Horst,
> function isInArray(afeld as variant,stext as variant) as integer '*ist stext in afeld?
> 'jetzt kann das Feld aber ein- oder mehrdimensional vorliegen. Wie kann ich das prüfen?
> ibound2=ubound(afeld(),2) gibt eine Fehlermeldung bei einem eindimensionalen Feld
schau mal hier nach: http://cereusapis.com/array-dimensions-in-openoffice-basic/
Da steht einiges zu Array...
Gruß
Oliver
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org