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