Итерации через словарь 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
, чтобы узнать все, что он содержит?
Ответы
Ответ 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
.