2010-05-07 8 views
11

Tôi là một người không phải là VB6, người có bất hạnh kế thừa một dự án VB6/Classic ASP lỗi. Có một phần mà rất nhiều mục được đưa vào một Dictionary và tôi muốn xem tất cả các mục có chứa. Tôi cố gắng này (oParams là một từ điển):Lặp lại thông qua một từ điển VB6

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

nào trả về:

Đối tượng không hỗ trợ tài sản hoặc phương pháp: 438

Sử dụng Option Explicit, làm thế nào để tôi lặp thông qua một VB6 Dictionary để tìm hiểu mọi thứ nó chứa?

Trả lời

12

Dưới đây là một ví dụ cho iterating, nếu bạn vẫn có một cái nhìn vấn đề ở vòng thứ hai để kiểm tra việc loại các giá trị trong từ điển

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 
9

Một liệt kê trên một từ điển không phải là loại Object, bạn nên sử dụng Variant thay vì:

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

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

Cũng trong For Each Key được trả lại không phải là thành viên điển do đó oParams(o) cho giá trị, nếu bạn đổi thành số Each o In oParams.items bạn có thể sử dụng trực tiếp oParams.