Подтвердить что ты не робот

Итерации через словарь VB6

Я человек, не являющийся VB6, у которого было несчастье наследовать неудачный проект VB6/Classic ASP. Там раздел, где много записей помещается в 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, чтобы узнать все, что он содержит?

4b9b3361

Ответ 1

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

  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

Ответ 2

Перечисление в словаре не относится к типу 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) для значения, если вы измените значение на Each o In oParams.items, вы можете напрямую использовать oParams.