通过VB6字典迭代

时间:2010-05-07 15:45:38

标签: vb6 asp-classic dictionary

我是一个非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以找出它包含的所有内容?

2 个答案:

答案 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