Итерация по словарю VB6


Я не VB6 человек, который имел несчастье унаследовать багги legacy VB6 / Classic ASP project. Есть раздел, где много записей помещается в Dictionary, и я хочу увидеть все, что он содержит. Я попробовал это (oParams - словарь):

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

Который вернул:

Объект не поддерживает это свойство или метод: 438

Используя Option Explicit, Как я перебираю VB6 Dictionary, чтобы узнать все, что он содержит?

2 12

2 ответа:

Вот пример для итерации, если у вас все еще есть проблема, посмотрите на второй цикл, чтобы проверить типы значений в словаре

  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

Перечисление над словарем не имеет типа Object, вместо него следует использовать Variant:

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

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

Также в пределах For Each ключ возвращается не член словаря, следовательно, oParams(o) для значения, если вы измените на For Each o In oParams.items, вы можете использовать oParams напрямую.