VBScript: come utilizzare un oggetto dizionario restituito da una funzione?
-
02-07-2019 - |
Domanda
Sto cercando di restituire un dizionario da una funzione. Credo che la funzione funzioni correttamente, ma non sono sicuro di come utilizzare il dizionario restituito.
Ecco la parte rilevante della mia funzione:
Function GetSomeStuff()
'
' Get a recordset...
'
Dim stuff
Set stuff = CreateObject("Scripting.Dictionary")
rs.MoveFirst
Do Until rs.EOF
stuff.Add rs.Fields("FieldA").Value, rs.Fields("FieldB").Value
rs.MoveNext
Loop
GetSomeStuff = stuff
End Function
Come posso chiamare questa funzione e usare il dizionario restituito?
EDIT: ho provato questo:
Dim someStuff
someStuff = GetSomeStuff
e
Dim someStuff
Set someStuff = GetSomeStuff
Quando provo ad accedere ad someStuff, ricevo un errore:
Microsoft VBScript runtime error: Object required: 'GetSomeStuff'
MODIFICA 2: provare questo nella funzione:
Set GetSomeStuff = stuff
Risultati in questo errore:
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
Soluzione
Non ero troppo sicuro di quale fosse il tuo problema, quindi ho provato un po '.
Sembra che ti sia sfuggito che per assegnare un riferimento a un oggetto, devi usare set
, anche per un valore di ritorno:
Function GetSomeStuff
Dim stuff
Set stuff = CreateObject("Scripting.Dictionary")
stuff.Add "A", "Anaconda"
stuff.Add "B", "Boa"
stuff.Add "C", "Cobra"
Set GetSomeStuff = stuff
End Function
Set d = GetSomeStuff
Wscript.Echo d.Item("A")
Wscript.Echo d.Exists("B")
items = d.Items
For i = 0 To UBound(items)
Wscript.Echo items(i)
Next
Altri suggerimenti
Hai provato a fare
imposta GetSomeStuff = stuff
nell'ultima riga della funzione?
Hai provato:
Dim returnedStuff
Set returnedStuff = GetSomeStuff()
Quindi " per ciascuno " iterando sul dizionario? C'è un esempio dell'uso del Dizionario (anche se per VB6, l'essenza è la stessa però!) qui .