2017-01-26 3 views
0

개체 사전이 있습니다. 각 개체는 오류입니다. 로그의 오류를 반복하면서 설명을 키로 사용하여 사전에 객체를 추가하고 있습니다. 키가 이미있는 경우 개수를 업데이트하고 싶습니다. 이것이 내가 문제가되는 곳입니다. 카운트를 업데이트합니다.개체 사전에서 개체 속성을 업데이트 하시겠습니까?

정의 :

Class errClass 
    Dim errDesc, errType, hasPhr, errCount, lwCount, errPriority, edge 
End Class 

Dim errs: Set errs = CreateObject("Scripting.Dictionary") 

인구가 : 오류가 발생한 바로 위의

errDetails.errDesc = resultSet("eventtext") 
errDetails.errType = resultSet("eventtype") 
errDetails.edge = resultSet("namespace") 
errDetails.errPriority = 1 

If errs.Exists(errDetails.errDesc) Then 
    If dev Then WScript.Echo "Key exists, incrementing count" 
    errs.Item(errDetails.errDesc)("errCount") = errs.Item(errDetails.errDesc)("errCount") + 1 
Else 
    If dev Then WScript.Echo "Key does not exist, adding" 
    errs.Add errDetails.errDesc, errDetails 
End If 

입니다 : errs.Item(errDetails.errDesc)("errCount") = errs.Item(errDetails.errDesc)("errCount") + 1

Microsoft VBScript runtime error: Object doesn't support this property or method: 'errs.Item(...)'

가 홍보 무엇입니까 사전에있는 객체의 속성을 업데이트하는 방법은 무엇입니까?

+5

'errs.Item (errDetails.errDesc) ("errCount")'->'errs.Item (errDetails.errDesc) .errCount' –

+0

@AnsgarWiechers에 댓글을 달았을 때 답을 쓰고 있었는데, 죄송합니다. – Rich

답변

1

Ansgar가 주석에서이 작업을 수행했지만 여기에 코드 샘플이 있습니다.

Class errClass 
    Public errDesc, errType, hasPhr, errCount, lwCount, errPriority, edge 
End Class 

dim errDetails : set errdetails = new errClass 

Dim errs: Set errs = CreateObject("Scripting.Dictionary") 
dim dev: dev = true 
errDetails.errDesc = "test" 
errDetails.errType = "test" 
errDetails.edge = "test" 
errDetails.errPriority = 1 

errs.Add errDetails.errDesc, errDetails 

errs.Item(errDetails.errDesc).errCount = errs.Item(errDetails.errDesc).errCount + 100 

msgbox errs.Item(errDetails.errDesc).errCount 
0

기타 지적한 바와 같이 문자열을 사용하여 개체 속성을 참조 할 수 없습니다. 객체 참조를 그대로

는, 당신은 별개의 인스턴스를 보유 할 필요를 사전을 카운트 그래서 1. 시작 :

Class errClass 
    Dim errDesc, errCount 
    Public Sub show 
     WScript.Echo errDesc, errCount 
    End Sub 
End Class 

' dictionary of errClass objects 
Dim errs : Set errs = CreateObject("Scripting.Dictionary") 

Dim e 
For Each e In Split("stupid silly stupid") 
    If errs.Exists(e) Then 
     WScript.Echo "Key exists, incrementing count" 
     errs(e).errCount = errs(e).errCount + 1 
    Else 
     WScript.Echo "new Key, adding new object to dictionary" 
     Dim o : Set o = New errClass : o.errDesc = e : o.errCount = 1 
     errs.add e, o 
    End If 
Next 

For Each e In errs.Keys() 
    errs(e).show 
Next 

출력 :

cscript 41878841.vbs 
new Key, adding new object to dictionary 
new Key, adding new object to dictionary 
Key exists, incrementing count 
stupid 2 
silly 1 
관련 문제