Autor Thema: Ist Array initialisiert?  (Gelesen 2224 mal)

Offline oxyd21

  • Senior Mitglied
  • ****
  • Beiträge: 371
  • Geschlecht: Männlich
Ist Array initialisiert?
« am: 18.08.11 - 15:17:55 »
Hallo,

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


VG, Michael

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Ist Array initialisiert?
« Antwort #1 am: 18.08.11 - 15:26:13 »
Isarray

Offline oxyd21

  • Senior Mitglied
  • ****
  • Beiträge: 371
  • Geschlecht: Männlich
Re: Ist Array initialisiert?
« Antwort #2 am: 18.08.11 - 15:40:59 »
Hmm, dann habe ich einen anderen Fehler.


Offline oxyd21

  • Senior Mitglied
  • ****
  • Beiträge: 371
  • Geschlecht: Männlich
Re: Ist Array initialisiert?
« Antwort #3 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

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Ist Array initialisiert?
« Antwort #4 am: 18.08.11 - 15:56:10 »
Hallo,

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


Andreas

Offline oxyd21

  • Senior Mitglied
  • ****
  • Beiträge: 371
  • Geschlecht: Männlich
Re: Ist Array initialisiert?
« Antwort #5 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 
« Letzte Änderung: 18.08.11 - 16:20:17 von oxyd21 »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ist Array initialisiert?
« Antwort #6 am: 18.08.11 - 18:51:16 »
Warum ,2?

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

Offline oxyd21

  • Senior Mitglied
  • ****
  • Beiträge: 371
  • Geschlecht: Männlich
Re: Ist Array initialisiert?
« Antwort #7 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?
« Letzte Änderung: 19.08.11 - 07:23:07 von oxyd21 »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ist Array initialisiert?
« Antwort #8 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).

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz