Question Itérer via un dictionnaire VB6


Je suis une personne non-VB6 qui a eu le malheur d'hériter d'un projet ASP hérité de VB6 / Classic. 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é ceci (oParams est un dictionnaire):

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

Qui a retourné:

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

En utilisant Option Explicit, comment je traverse un VB6 Dictionary savoir tout ce qu'il contient?


12
2018-05-07 15:45


origine


Réponses:


Voici un exemple pour l'itération, si vous avez toujours un problème de regarder 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

12
2018-05-07 15:57



Une énumération sur un dictionnaire n'est pas du type Object, Tu devrais utiliser Variant au lieu:

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

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

Aussi dans le For Each la clé est retournée pas le membre du dictionnaire donc la oParams(o) pour la valeur, si vous changez pour For Each o In oParams.items vous pouvez utiliser oParams directement.


10
2018-05-07 15:56