2012-05-23 80 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,但似乎像空

我覺得很奇怪Google沒有列出這個問題的任何有用的結果 - 如何分配字典在數組中?

最近我發現了這個懸而未決link

我的問題是,我有一個創建臨時詞典,我計劃與字典對象的簡單的一個維數組來養活一個循環,但沒有成功

我還發現了這樣的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機器:

C:\>cscript test.vbs 
Microsoft (R) Windows Script Host Version 5.8 
Copyright (C) Microsoft Corporation. All rights reserved. 

Belgrade 
Athens 
Belgrade 
Cairo 

C:\> 
+0

就像我想要的,但不幸的是它拋出一個錯誤:'型mismatch' – theta

+0

我添加了包括版本號,您使用的是哪個版本的VBScript的一個完整的例子嗎? –

+0

對不起,這是我的錯字(我的字典是'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具有可變關鍵字時,在分開的數組中分開鍵/項會複雜一點。簡單的例子當然是清楚的。謝謝你們,我發現我的問題與你的答案 - 如果循環temp字典並將其分配給數組,dict必須在將其添加到數組並重新創建Dictionary對象後銷燬。我正在使用'dict.RemoveAll'來解決這個問題。乾杯 – theta