Domino 9 und frühere Versionen > ND8: Entwicklung

Ist Array initialisiert?

<< < (2/2)

oxyd21:
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

--- Ende Code ---

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

--- Ende Code ---

Peter Klett:
Warum ,2?

For i = LBound(strFARRAY,2) To UBound(strFARRAY,2)

oxyd21:
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?

Peter Klett:
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).

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln