Итерация по словарю 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 ответа:
Вот пример для итерации, если у вас все еще есть проблема, посмотрите на второй цикл, чтобы проверить типы значений в словаре
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)
для значения, если вы измените на ForEach o In oParams.items
, вы можете использоватьoParams
напрямую.