2010-05-07 11 views
11

Ich bin eine Nicht-VB6-Person, die das Pech hatte, ein fehlerhaftes Legacy VB6/Classic ASP-Projekt zu erben. Es gibt einen Abschnitt, in dem viele Einträge in eine Dictionary eingegeben werden und ich möchte alles sehen, was es enthält. Ich habe versucht, diese (oParams ein Wörterbuch ist):Iterate durch ein VB6-Wörterbuch

Dim o As Object 
Dim sDicTempAggr As String 
sDicTempAggr = "" 
For Each o In oParams 
    sDicTempAggr = sDicTempAggr & ", " & o 
Next 

Welche zurückgegeben:

Objekt diese Eigenschaft oder diese Methode nicht unterstützt: 438

Option Explicit verwenden, wie kann ich iterieren durch eine VB6 Dictionary um alles zu finden, was es enthält?

Dim o As Variant 
Dim sDicTempAggr As String 
sDicTempAggr = "" 

For Each o In oParams 
    sDicTempAggr = sDicTempAggr & ", " & oParams(o) 
Next 

Auch wird daher die oParams(o) für den Wert nicht mit dem Wörterbuch Mitglied zurück im For Each des Schlüssel, wenn Sie:

Antwort

12

Hier ist ein Beispiel für das Iterieren, wenn Sie immer noch ein Problem Blick auf die zweite Schleife haben die Typen der Werte im Wörterbuch

Dim oParams As New Dictionary 
    oParams.Add 1, "This" 
    oParams.Add 2, "That" 
    oParams.Add 3, "The other" 
    Dim key As Variant 
    Dim sDicTempAggr As String 
    Dim sTypes As String 
    For Each key In oParams.Keys 
     sDicTempAggr = sDicTempAggr & IIf(sDicTempAggr <> "", ",", "") & oParams(key) 
    Next key 
    For Each key In oParams.Keys 
      sTypes = sTypes & IIf(sTypes <> "", ",", "") & TypeName(oParams(key)) 
    Next key 
zu inspizieren
9

Eine Aufzählung über ein Wörterbuch nicht vom Typ ist Object, sollten Sie Variant stattdessen verwenden ändern zu Für Each o In oParams.items können Sie oParams direkt verwenden.