examples - vbscript virus
VBScript: ¿Cómo utilizar un objeto de diccionario devuelto por una función? (3)
Estoy tratando de devolver un diccionario de una función. Creo que la función funciona correctamente, pero no estoy seguro de cómo utilizar el diccionario devuelto.
Aquí está la parte relevante de mi función:
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
¿Cómo llamo a esta función y uso el diccionario devuelto?
EDITAR: He intentado esto:
Dim someStuff
someStuff = GetSomeStuff
y
Dim someStuff
Set someStuff = GetSomeStuff
Cuando intento acceder a someStuff, aparece un error:
Microsoft VBScript runtime error: Object required: ''GetSomeStuff''
EDIT 2: Probar esto en la función:
Set GetSomeStuff = stuff
Resultados en este error:
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
Has intentado hacer
set GetSomeStuff = stuff
en la última línea de la función?
Has probado:
Dim returnedStuff
Set returnedStuff = GetSomeStuff()
Entonces "para cada" iteración sobre el diccionario? Hay un ejemplo del uso del Diccionario (aunque para VB6, ¡aunque la esencia es la misma!) Aquí .
No estaba muy seguro de cuál era tu problema, así que experimenté un poco.
Parece que simplemente te perdiste de eso para asignar una referencia a un objeto, tienes que usar set
, incluso para un valor de retorno:
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