63 Stimmen

Wie kann ich feststellen, ob ein Array in VB6 initialisiert ist?

Die Übergabe eines nicht dimensionierten Arrays an die Ubound-Funktion von VB6 führt zu einem Fehler. Ich möchte also überprüfen, ob das Array bereits dimensioniert wurde, bevor ich versuche, seine obere Grenze zu überprüfen. Wie kann ich dies tun?

0voto

Perry Pederson Punkte 95

Wenn das Array ein String-Array ist, können Sie die Join()-Methode als Test verwenden:

Private Sub Test()

    Dim ArrayToTest() As String

    MsgBox StringArrayCheck(ArrayToTest)     ' returns "false"

    ReDim ArrayToTest(1 To 10)

    MsgBox StringArrayCheck(ArrayToTest)     ' returns "true"

    ReDim ArrayToTest(0 To 0)

    MsgBox StringArrayCheck(ArrayToTest)     ' returns "false"

End Sub

Function StringArrayCheck(o As Variant) As Boolean

    Dim x As String

    x = Join(o)

    StringArrayCheck = (Len(x) <> 0)

End Function

-1voto

Evan TOder Punkte 29

Ich sehe viele Vorschläge im Internet über wie man feststellt, ob ein Array initialisiert wurde . Nachfolgend finden Sie eine Funktion, die ein beliebiges Array nimmt, prüft, was der ubound dieses Arrays ist, das Array auf ubound +1 redimensioniert (mit oder ohne PRESERVER) und dann zurückgibt, was der aktuelle ubound des Arrays ist, ohne Fehler.

Function ifuncRedimUbound(ByRef byrefArr, Optional bPreserve As Boolean)
On Error GoTo err:

1: Dim upp%:           upp% = (UBound(byrefArr) + 1)

errContinue:

If bPreserve Then
         ReDim Preserve byrefArr(upp%)
Else
         ReDim byrefArr(upp%)
End If

ifuncRedimUbound = upp%

Exit Function
err:
If err.Number = 0 Then Resume Next
    If err.Number = 9 Then ' subscript out of range (array has not been initialized yet)
             If Erl = 1 Then
                         upp% = 0
                         GoTo errContinue:
             End If
    Else
               ErrHandler.ReportError "modArray", ifuncRedimUbound, "1", err.Number, err.Description
    End If
End Function

-2voto

madhu_p Punkte 11

Das hat bei mir funktioniert, gibt es da einen Fehler?

If IsEmpty(a) Then
    Exit Function
End If

MSDN

-8voto

Andrew Harmel-Law Punkte 7479
Dim someArray() as Integer    

If someArray Is Nothing Then
    Debug.print "this array is not initialised"
End If

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X