2012-05-23 4 views
2

간단한 예를 들어 사전을 추가하는 방법 :배열에

Dim d, a(0) 
Set d = CreateObject("Scripting.Dictionary") 
d.Add "a", "Athens" 
d.Add "b", "Belgrade" 
d.Add "c", "Cairo" 
Set a(0) = d 

WScript.Echo(TypeName(a)) 

출력 :이 개체에 액세스하는 방법을 어떤 방식으로 표시되지 않습니다

Variant()

, 그것은 3을 계산하지만 것 같습니다 like empty

Google이이 질문에 대한 유용한 결과를 나열하지 않는다는 사실에 놀라움을 금치 못합니다. 내가 찾은

가장 가까운이 답 link

내 문제는 내가 사전 개체 간단한 차원 배열에 공급하는 계획 일시적으로 사전을 생성하는 루프를 가지고 있지만 것입니다이었다 성공

I없이 또한이 경우 link 두 개의 배열이 사전 키와 사전 항목 (값)에 대해 개별적으로 만들어지기 때문에 제 경우에는 너무 복잡합니다.

VBScript를 사용하여이 모든 작업을 수행 할 수 있습니까?

답변

3

내가 질문을 잘못 이해했을 수도 있지만,이 같은 사전에 액세스 할 수 있습니다

WScript.Echo(a(0).Item("b")) 

편집을

이 코드 :

Dim d, a(0) 
Set d = CreateObject("Scripting.Dictionary") 
d.Add "a", "Athens" 
d.Add "b", "Belgrade" 
d.Add "c", "Cairo" 
Set a(0) = d 
WScript.Echo(a(0).Item("b")) 

dim x 
x = d.Items 

dim i 
for i = lbound(x) to ubound(x) 
    WScript.Echo(x(i)) 
next 

내 Windows에서이 출력을 생성합니다 7 기계 :

,663,210
+0

:'유형 – theta

+0

내가 사용하는 VBScript를 어떤 버전의 버전 번호를 포함하는 전체 예제를 추가 한 mismatch'를? –

+0

죄송합니다, 내 말에 오타가되었습니다. (내 dict은 d이고 방금 답장을 붙여 넣었습니다.) 완벽하게 작동합니다. – theta

0

예 :

내가 원하는,하지만 불행히도 그것은 오류가 발생 것처럼
Dim d 
Set d = CreateObject("Scripting.Dictionary") 
d.Add "a", "Athens" 
d.Add "b", "Belgrade" 
d.Add "c", "Cairo" 

WScript.Echo(d("a")) '=> Athens 

d("a") = "Brussels" 

WScript.Echo(d("a")) '=> Brussels 

a = d.Keys ' Get the keys. 
b = d.Items 
For i = 0 To d.Count -1 ' Iterate the array. 
    wscript.echo a(i) & " " & b(i) 
Next 


'=>a Brussels 
'=>b Belgrade 
'=>c Cairo 
+0

예, 루프를 사용하고 dict에 변수 키가 있으면 별도의 배열에있는 키/항목을 나누는 것이 약간 복잡합니다. 간단한 예에서는 물론 분명합니다. 고마워요, 내가 당신의 대답을 가지고 문제를 발견 - 임시 dict 반복하고 그것을 배열에 할당하면 dict 배열과 사전 개체를 다시 추가에 추가 한 후 파괴해야합니다. 나는 대신'dict.RemoveAll'을 사용했고,이 문제에 봉착했습니다. 건배 – theta