[VB6] Überprüfen ob Schlüssel vorhanden - Registry

nicok

Erfahrenes Mitglied
Ich stehe vor einem Problem.

In meinem aktuellen Projekt werden alle Werte innerhalb eines Schlüssels automatisch in eine Listbox geladen.
Soweit so gut, das geht auch alles einwandfrei, bis auf das Problem, das wenn der Schlüssel nicht vorhanden ist bzw der Schlüssel keinen Wert hat kommt eine nette Fehlermeldung
"Index außerhalb des gültigen Bereichs"

Hier der Code:

Code:
Dim Feld3() As String
Dim i3 As Integer
  Feld3 = Regedit.GetAllValues(HKEY_LOCAL_MACHINE, "SOFTWARE\ChildProtect\" &  Label1.Caption & "\Keywords\")
     For i3 = 0 To UBound(Feld3)
     With List2
      .AddItem Feld3(i3, 1)
    End With
  Next

Das Problem ist dann bei dem
For i3 = 0 To UBound(Feld3)

Ich denke es ist so, da der Array Feld3 nicht gefüllt worden ist, kommt ein Error wegen des Ubound. Sicher bin ich mir nicht

Also entweder ich finde eine Möglichkeit Feld3 zu überprüfen oder zu checken ob der Schlüssel vorhanden ist und mit Werten gefüllt ist.
 
Du kannst die Fehlermeldung in jedem Fall einfach umgehen, indem Du einen Errorhandler einbaust. Wenn Du an den Anfang der Prozedur schreibst:

Visual Basic:
   On Error Resume Next

wird keine Fehlermeldung angezeigt. Oder Du programmierst einen Errorhandler, in dem Du dann noch entsprechende Hinweise ausgibst.

Grüsse
ronaldh
 
Hi,

also wenn, dann besser die Variante mit der vollständigen Fehlerbehandlung. Wenn ich sowas wie On Error Resume Next sehe, könnt ich jedesmal schreien. :rolleyes:

Alternativ könntest du aber auch versuchen, heraus zu finden, warum dieser Fehler auftritt. Welchen Wert liefert UBound(Feld3) zurück, dass es schon im Schleifenkopf zu einer IndexOutOfBounds-Exception kommt?

Grüße, D.
 
Zurück