我是一个非VB6的人,不幸遗传了一个错误的传统VB6 / Classic ASP项目。有一个部分,其中有很多条目被放入Dictionary
,我希望看到它包含的所有内容。我试过这个(oParams
是一个词典):
Dim o As Object
Dim sDicTempAggr As String
sDicTempAggr = ""
For Each o In oParams
sDicTempAggr = sDicTempAggr & ", " & o
Next
返回了:
Object不支持此属性或方法:438
使用Option Explicit
,如何遍历VB6 Dictionary
以找出它包含的所有内容?
答案 0 :(得分:14)
这是一个迭代的示例,如果您仍有问题,请查看第二个循环以检查字典中值的类型
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
答案 1 :(得分:10)
对词典的枚举不属于Object
类型,您应该使用Variant
代替:
Dim o As Variant
Dim sDicTempAggr As String
sDicTempAggr = ""
For Each o In oParams
sDicTempAggr = sDicTempAggr & ", " & oParams(o)
Next
同样在For Each
内,Key不会返回字典成员,因此会返回值oParams(o)
,如果您更改为For Each o In oParams.items
,则可以直接使用oParams
。