Avatar billede bluestrike Nybegynder
26. august 2004 - 09:45 Der er 3 kommentarer og
1 løsning

Retuner two dimensions array fra function.

Hej

Jeg har lavet en function som laver en del beregninger, og data'erne er lagret i et two dimensions array.
Mit problem er at jeg ikke kan retunere dette array til den function som kalder beregnings funktionen, jeg får en datatype fejl.

Jeg vil gerne noget som herunder:

function Etagesystem(a,b,c,d,e,f)
dim test(17,3)
//Værdier fyldes i

//Hvordan retunere jeg så arrayet uden at få datatype fejl.
end function

dim arrayReturned

arrayReturned = Etagesystem(52,2,3,0,1,0)

antalRows = ubound(arrayReturned,3)

Hvor arrayReturned skal initialiseres som et two dimensions array som modtager det array som retuneres fra Etagesystem, håber nogen kan hjælpe.
Avatar billede fennec Nybegynder
26. august 2004 - 09:52 #1
Du kan enten sende arrayet med i funktionskaldet, eller du kan erklære den globalt.

1:
function Etagesystem(test,a,b,c,d,e,f)
...
end function

dim arrayReturned (17,3)
Etagesystem(arrayReturned,52,2,3,0,1,0)

2:
dim test(17,3)
function Etagesystem(a,b,c,d,e,f)
...
end function
Avatar billede bluestrike Nybegynder
26. august 2004 - 09:56 #2
Okay... Hvis jeg bruger den første metode som jeg så absolut bedst kan lide, da jeg er imod globale variable, kan jeg så uden videre arbejde videre med array'et efter funktionskaldet, og er data'erne i array så opdateret fra funktionen??

Er der en måde at teste længden af arrayet på, når det er two dimensionelt.?
Avatar billede fennec Nybegynder
26. august 2004 - 10:02 #3
... Kræver måske lidt forklaring.

Funktionsparameter bliver overført pr "reference"/pointer. Det betyder at hvis du overfører en variabel og ændre i den i funktionen, bliver ændringerne lavet i den orginale variabel. Man kan dog sætte en indstilling så der bliver oprettet en kopi i stedet, men det er jo ikke interresant i dette tilfælde.

Eks:
function test(EnVar)
  EnVar = 4
end function
temp = 0
response.write temp &"<br>" 'temp = 0
call test(temp)
response.write temp &"<br>" 'temp = 4

Og du kan godt teste længden på et flere dim. array
uBound(arrayReturned,1) 'længde på første dim (17)
uBound(arrayReturned,2) 'længde på anden dim (3)
Avatar billede bluestrike Nybegynder
26. august 2004 - 10:11 #4
Okay... takker for hjælpen.
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