vbscript : 함수에서 반환 된 사전 객체를 사용하는 방법은 무엇입니까?

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

  •  02-07-2019
  •  | 
  •  

문제

함수에서 사전을 반환하려고합니다. 이 기능이 올바르게 작동한다고 생각하지만 반환 된 사전을 어떻게 활용하는지 잘 모르겠습니다.

내 기능의 관련 부분은 다음과 같습니다.

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

이 기능을 호출하고 반환 된 사전을 어떻게 사용합니까?

편집 : 나는 이것을 시도했다 :

Dim someStuff
someStuff = GetSomeStuff

그리고

Dim someStuff
Set someStuff = GetSomeStuff

Somestuff에 액세스하려고하면 오류가 발생합니다.

Microsoft VBScript runtime error: Object required: 'GetSomeStuff'

편집 2 : 기능에서 이것을 시도합니다.

Set GetSomeStuff = stuff

이 오류가 발생합니다.

Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
도움이 되었습니까?

해결책

나는 당신의 문제가 무엇인지 확신하지 못했기 때문에 조금 실험했습니다.

객체에 대한 참조를 할당하기 위해 그것을 놓친 것 같습니다. set, 리턴 값에 대해서도 :

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

다른 팁

당신은 시도 했습니까?
set GetSomeStuff = stuff
함수의 마지막 줄에서?

시도 했습니까?

Dim returnedStuff
Set returnedStuff = GetSomeStuff()

그런 다음 사전을 반복하는 "각각"에 대해? 사전을 사용하는 예가 있습니다 (VB6에도 불구하고 요점은 동일합니다!) 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top