Avatar billede Slettet bruger
12. februar 2008 - 16:14 Der er 1 løsning

Kalde array fra Function

Hejsa.
Jeg får en underlig fejl når jeg afvikler nedenstående kode i en .vbs fil.

Dim strFileName, arrUsers

strFileName = "test.csv"
arrUsers = ReadCSV(strFileName)

For Each intItem In arrUsers
    'intCounter = intCounter + 1
    MsgBox intItem
Next

' ****************************************************************************
' ReadCSV - Læser fra en CSV fil og returnerer et array med indholdet
' ****************************************************************************
Function ReadCSV(strFileName)
    Dim objFSO, objTextFile, intCounter, arrUsers
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile("test.csv")
   
    intCounter = 0
    Do Until objTextFile.AtEndOfStream
          arrUsers(intCounter) = split(objTextFile.ReadLine,",")
          intCounter = intCounter + 1
    Loop
   
    objTextFile.Close
    Set objTextFile = Nothing
    Set objFSO = Nothing
   
    ReadCSV = arrUsers
End Function

Jeg får en fejl om at typerne ikke stemmer overens og formoder at det har noget at gøre med at jeg ikke har givet mit aray en fast størrelse.
Men jeg vil imidlertid gerne instantiere det direkte fra min funktion, uden at skulle give det en fast størrelse og herefter lave en ReDim eller ligende.

Hvad kan jeg gøre for at få dette til at virke. Det jeg vil lave er, at der læses fra en .csv fil, her lægges data over i mit array, hvorefter dette array sættes lig med et nyt arrUsers array.
Jeg skal så herefter finde ud af hvordan jeg lægger de komma-sepererede værdier over i et array for hver værdi og herefter kan arbejde med disse data.
Avatar billede nielsrs Nybegynder
20. februar 2008 - 12:27 #1
I forbindelse med split kan du ikke give din array en fast størrelse.

Det er arrUsers(intCounter) = split......      som giver fejlen, arrUsers må ikke være et array i forbindelse med split funktionen, du kan løse problemet via en mellemberegning.

Som følgende 

Dim objFSO, objTextFile, intCounter, arrUsers(1000,1000) , emne, x
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile("test.csv")
   
    intCounter = 0
    Do Until objTextFile.AtEndOfStream
          emne = split(objTextFile.ReadLine,",")
          for x = 0 to ubound(emne,1)
            arrUsers(intCounter,x) = emne(x)
          next
    Loop
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