2010-05-07 6 views
11

Je suis une personne non-VB6 qui a eu la malchance d'hériter d'un projet VB6/ASP classique. Il y a une section où beaucoup d'entrées sont mises dans un Dictionary et je veux voir tout ce qu'il contient. J'ai essayé (oParams est un dictionnaire):Itérer à travers un dictionnaire VB6

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

qui est revenu:

objet ne prend pas en charge cette propriété ou méthode: 438

En utilisant Option Explicit, comment puis-je itérer à travers un VB6 Dictionary pour savoir tout ce qu'il contient?

Répondre

12

Voici un échantillon pour itérer, si vous avez encore un look problème à la deuxième boucle pour inspecter les types de valeurs dans le dictionnaire

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 
9

Une énumération sur un dictionnaire est pas de type Object, vous devez utiliser Variant à la place:

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

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

également dans le For Each la clé est renvoyée pas membre dictionnaire d'où le oParams(o) de la valeur, si vous changez pour Pour Each o In oParams.items vous pouvez utiliser oParams directement.

Questions connexes