Avatar billede dingemann Novice
07. februar 2011 - 13:59 Der er 5 kommentarer og
1 løsning

VBS: Funktion der returner et array

Hej folkens,

Jeg er løbet lidt ind i et dilemma som jeg ikke helt kan se løsningen på.

Jeg har et script hvori der er en funktion der returnerer et array. Men hvordan anvender jeg funktionen? Følgende giver selvfølgelig fejl:


################

Private Function ReadConfigFile()
    Dim ConfigFileName
    ConfigFileName = fso.GetBaseName(WScript.ScriptName) & ".config"
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile(ConfigFileName)
    i = 0

    Do Until objFile.AtEndOfStream
        ReDim Preserve arrLines(i)
        strLine = objFile.ReadLine
        strItemArray = Split(strLine, ";", -1, 1)
        arrLines(i) = Array(strItemArray(0), strItemArray(1))   
        i = i + 1
    Loop
    ReadConfigFile = arrLines
End Function

MsgBox ReadConfigFile(0)(1)

###################


hvis vi nu siger at .config-filen indeholder
hest;hest2
hest3;hest4

så er det hest2 som MsgBoxen skulle udskrive men ReadConfigFile tror selvfølgelig at det er parametre den får smidt efter sig. Jeg gør selvfølgelig noget galt - men hvad?
Avatar billede softspot Forsker
07. februar 2011 - 14:13 #1
Prøv at lægge returværdien i en variabel inden du indekserer array'et.
Avatar billede dingemann Novice
07. februar 2011 - 14:42 #2
jeg tror du har misforstået. Det er hele arrayet jeg vil ha med ud og ikke en enkelt værdi... funktionen skal returnere hele dynen og ikke bare en enkelt værdi - deraf overskriften på spørgsmålet
Avatar billede softspot Forsker
07. februar 2011 - 14:50 #3
Næh, det mener jeg ikke jeg har ;-)

Gør således:

tmp = ReadConfigFile()
MsgBox tmp(0)(1)
Avatar billede dingemann Novice
07. februar 2011 - 14:58 #4
aaaah... jeg troede du mente at jeg skulle definere værdien jeg ville ha ud oppe i funktionen og lade den være return-værdien.
Men super! Du har ret! - smid et svar!
Avatar billede softspot Forsker
07. februar 2011 - 15:05 #5
Velbekomme :-)

Du kan muligvis komme omkring den midlertidige variabel ved at angive en eksplicit tom parameterliste i kaldet til funktionen.

MsgBox ReadConfigFile()(0)(1)
Avatar billede dingemann Novice
07. februar 2011 - 15:12 #6
Ja okay - det giver måske mening at sende en tom parameter-parentes men dit svar før virker glimragende så det bruger jeg :D
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