Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: oxyd21 am 18.08.11 - 15:17:55

Titel: Ist Array initialisiert?
Beitrag von: oxyd21 am 18.08.11 - 15:17:55
Hallo,

wie kann ich testen ob ein dynamischer Array initialisiert wurde (außer Fehler 200)?


VG, Michael
Titel: Re: Ist Array initialisiert?
Beitrag von: koehlerbv am 18.08.11 - 15:26:13
Isarray
Titel: Re: Ist Array initialisiert?
Beitrag von: oxyd21 am 18.08.11 - 15:40:59
Hmm, dann habe ich einen anderen Fehler.

Titel: Re: Ist Array initialisiert?
Beitrag von: oxyd21 am 18.08.11 - 15:54:36
Es wird ein nicht initialisiertes Array in eine Methode als Variant übergeben. Wenn ich dieses Variant nun mit IsArray teste, liefert er TRUE.

Hat jemand ne weitere Idee?  :o
Titel: Re: Ist Array initialisiert?
Beitrag von: ascabg am 18.08.11 - 15:56:10
Hallo,

Mich wuerde mal interessieren, wie die Variant-Variable, die den Array beeinhaltet, definiert wurde.


Andreas
Titel: Re: Ist Array initialisiert?
Beitrag von: oxyd21 am 18.08.11 - 16:17:48
klar... etwas zusammengekürzt

Code
Function CheckDocument(objError as ErrorObject) as Variant
 Dim strFArray() As String
 ' tralala

If FieldsFilledMulti (doc, strFARRAY, objError) = False Then Exit Function


End Function ' CheckDocument

Hier kommt mein Fehler, auf den ich gern zukünftig die Arrays testen würde. Ich produziere den hier nur, weil ich oben zuviel auskommentiert habe.
Code
Function FieldsFilledMulti (doc As NotesDocument,  strFArray As Variant, objError as ErrorObject) As Variant

    ' tralala

Print "Dataype: "+CStr(DataType(strFARRAY))  ' 8712
Print "Empty: "+CStr(IsEmpty(strFieldsARRAY))        ' False
Print "Scalar: "+CStr(IsScalar(strFARRAY))        ' False
Print "Array: "+CStr(IsArray(strFARRAY))           ' True

' hier kracht's
For i = LBound(strFARRAY,2) To UBound(strFARRAY,2)

'...
End Function ' FieldsFilledMulti 
Titel: Re: Ist Array initialisiert?
Beitrag von: Peter Klett am 18.08.11 - 18:51:16
Warum ,2?

For i = LBound(strFARRAY,2) To UBound(strFARRAY,2)
Titel: Re: Ist Array initialisiert?
Beitrag von: oxyd21 am 19.08.11 - 07:17:03
Weil's eigentlich ein zweidimensionales Array ist/ sein sollte.

LBound ( arrayName [ , dimension ] )

Wenn er an der Stelle nicht Error 200 (ErrUninitDynArray) werfen würde, würde ich den Fehler ja auf die fehlende Dimension schieben.

Macht für so etwas ein Ticket bei IBM Sinn?
Titel: Re: Ist Array initialisiert?
Beitrag von: Peter Klett am 19.08.11 - 08:00:31
Ich würde mir dazu im Debugger mal die tatsächliche Struktur der Variabeln ansehen, vermutlich ist es ein Array, deshalb keine Fehlermeldung vorher, aber nur ein eindimensionales.

Du könntest auch sinngemäß prüfen

If IsArray (arrayName) Then
   Forall an In arrayName
      If Not IsArray (an) -> Fehler
   End Forall
End If

Dann hättest Du geprüft, ob in Deinem Array nur Arrays enthalten sind (zweidimensional, falls ich es nicht total falsch verstanden habe).