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
Dim 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.