Avatar billede Slettet bruger
23. oktober 2007 - 17:20 Der er 3 kommentarer og
1 løsning

Returnering af et array fra en funktion

Hejsa.
Jeg sidder og nørkler med noget kode, hvor jeg skal gennemløbe et array, der returneres fra en funktion.

Jeg har lavet et lille eksempel for overskuelighedens skyld.

Option Explicit
Dim arrMyArray, strOutput, intCounter

arrMyArray = ReturnArray()
For intCounter = 0 To UBound(arrMyArray)
    strOutput = strOutput & VbCrLf & arrMyArray(intCounter)
    intCounter = intCounter + 1
Next

MsgBox strOutput

Function ReturnArray()
    arrMyArray(3)
    arrMyArray(0) = "Hejsa"
    arrMyArray(1) = "med"
    arrMyArray(2) = "dig"
    arrMyArray(3) = "!"
   
    ReturnArray = arrMyArray
End Function

Jeg får at vide at typerne ikke stemmer overens, men kan ikke lige gennemskue hvorfor denne fejlmeddelelse fremkommer.
Jeg har arbejdet en del i C#, hvor man snildt kan oprette et array ved at sætte det lig med returværdien i en funktion, der opretter et array, men ved ikke om dette er muligt i vbscript.
Avatar billede erikjacobsen Ekspert
23. oktober 2007 - 17:31 #1
Option Explicit
Dim arrMyArray, strOutput, intCounter

arrMyArray = ReturnArray()
For intCounter = 0 To UBound(arrMyArray)
    strOutput = strOutput & VbCrLf & arrMyArray(intCounter)
 
Next

MsgBox strOutput

Function ReturnArray()
    Dim arrMyArray(3)
    arrMyArray(0) = "Hejsa"
    arrMyArray(1) = "med"
    arrMyArray(2) = "dig"
    arrMyArray(3) = "!"
 
    ReturnArray = arrMyArray
End Function
Avatar billede Slettet bruger
23. oktober 2007 - 20:45 #2
Hej.

Tak, det virker perfekt!
Hvorfor skal jeg erklære arrMyArray som variabel i selve funktionen, når den allerede er erklæret globalt?

Smider du et svar :)
Avatar billede erikjacobsen Ekspert
23. oktober 2007 - 21:34 #3
Det er ikke den samme variabel. Du ku' li'sågodt

Option Explicit
Dim arrMyArray, strOutput, intCounter

arrMyArray = ReturnArray()
For intCounter = 0 To UBound(arrMyArray)
    strOutput = strOutput & VbCrLf & arrMyArray(intCounter)

Next

MsgBox strOutput

Function ReturnArray()
    Dim nisser(3)
    nisser(0) = "Hejsa"
    nisser(1) = "med"
    nisser(2) = "dig"
    nisser(3) = "!"

    ReturnArray = nisser
End Function



Jeg samler slet ikke på point, tak. Svar selv, accepter eget svar.
Avatar billede Slettet bruger
24. oktober 2007 - 20:34 #4
Hejsa.
Nej jeg regnede egentlig heller ikke med at det var den 'samme' variabel, men troede bare at den kunne kaldes/sættes fra alle funktioner, hvis den var erklæret globalt.
Men ok, jeg har nu struktureret min kode noget anderledes, så enhver funktion selv definerer/erklærer sine variable lokalt.
Ved ikke om dette er en bedre måde - det modsiger jo lidt den tankegang jeg er vandt til at bruge når jeg koder objektorienteret med C#.

Jeg takker for point :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester