开发者

Iterate through a VB6 Dictionary

开发者 https://www.devze.com 2022-12-29 06:54 出处:网络
I\'m a non-VB6 person who had the misfortune of inheriting a buggy legacy VB6/Classic ASP project. There\'s a section where a lot of entries are put into a Dictionary and I want to see all it contains

I'm a non-VB6 person who had the misfortune of inheriting a buggy legacy VB6/Classic ASP project. There's a section where a lot of entries are put into a Dictionary and I want to see all it contains. I tried this (oParams is a Dictionary):

Dim o As Object
Di开发者_如何学Pythonm sDicTempAggr As String
sDicTempAggr = ""
For Each o In oParams
    sDicTempAggr = sDicTempAggr & ", " & o
Next

Which returned:

Object doesn't support this property or method : 438

Using Option Explicit, how do I iterate through a VB6 Dictionary to find out everything it contains?


Here's a sample for iterating, if you still have a problem look at the second loop to inspect the types of the values in the dictionary

  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


An enumeration over a Dictionary isn't of type Object, you should use Variant instead:

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

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

Also within the For Each the Key is returned not the dictionary member hence the oParams(o) for the value, if you change to For Each o In oParams.items you can use oParams directly.

0

精彩评论

暂无评论...
验证码 换一张
取 消