VBScript: Wie ein Wörterbuch Objekt aus einer Funktion zurück utiliize?

StackOverflow https://stackoverflow.com/questions/140002

  •  02-07-2019
  •  | 
  •  

Frage

Ich versuche, ein Wörterbuch aus einer Funktion zurückzukehren. Ich glaube, die Funktion ordnungsgemäß funktioniert, aber ich bin nicht sicher, wie das zurückgegebene Wörterbuch nutzen.

Hier ist der relevante Teil meiner Funktion:

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

Wie kann ich diese Funktion aufrufen und das zurückgegebene Wörterbuch benutzen?

EDIT: Ich habe versucht, dies:

Dim someStuff
someStuff = GetSomeStuff

und

Dim someStuff
Set someStuff = GetSomeStuff

Wenn ich versuche, someStuff zuzugreifen, erhalte ich eine Fehlermeldung:

Microsoft VBScript runtime error: Object required: 'GetSomeStuff'

EDIT 2: Der Versuch, dies in der Funktion:

Set GetSomeStuff = stuff

Ergebnisse in diesem Fehler:

Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
War es hilfreich?

Lösung

Ich war nicht ganz sicher, was war dein Problem, so experimentierte ich ein wenig.

Es scheint, dass Sie nur, dass verpassten einen Verweis auf ein Objekt zuweisen, haben Sie set zu verwenden, auch für einen Rückgabewert:

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

Andere Tipps

Haben Sie versucht zu tun
set GetSomeStuff = stuff
in der letzten Zeile der Funktion?

Haben Sie versucht:

Dim returnedStuff
Set returnedStuff = GetSomeStuff()

Dann "For Each" Iterieren über das Wörterbuch? Es ist ein Beispiel für das Wörterbuch mit (wenn auch für VB6, der Kern ist es die gleiche aber!) hier .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top