Avatar billede wan31 Nybegynder
18. november 2005 - 15:17 Der er 9 kommentarer og
1 løsning

Kalde en function i en function?

Nu har jeg lært noget nyt om Functions i dag, og så støder jeg selvf. på et problem.....

Function Generate_test(Test)
    FulTid = Now()
    Dato = Date()

    Generate_test = Test
End function


Function Call_test()
    Call_test = Generate_test(FulTid)
End function

Response.Write(Call_test())


Denne eksempel kode her vil ikke virke med mindre jeg Kalder Generate_test(Test) før jeg kalder Call_test()....

hvorfor må jeg ikke kalde den ene i den anden..????
Avatar billede milandt Nybegynder
18. november 2005 - 16:09 #1
Response.Write(Call_test())
- her kalder du funktionen Call_test()

i Call_test kalder du funktionen Generate_test(FulTid), men FulTid er ikke defineret på dette tidspunkt.
Avatar billede milandt Nybegynder
18. november 2005 - 16:11 #2
FulTid er en lokal variabel i funktionen Generate_test(..) som i øvrigt ikke bliver brugt til noget. Jeg tror at ovenstående ville virke hvis du flyttede linien "FulTid = Now()" ned i funktionen Call_test(), før du i Call_test() kalder Generate_test(FulTid)
Avatar billede wan31 Nybegynder
18. november 2005 - 16:15 #3
Fultid i Call_test fotæller at det er den string den skal tage i Generate_Test. Hvis du laver den om til Dato, er det dato den vil tage.

Og hvis du skriver Response.Write(Generate_test(FuldTid)) istedet, så virker det fint. Det er kun hvis den skal en tur igennem den anden Function at den ikke vil virke. Og det skal den, for det er den metode jeg skal bruge
Avatar billede milandt Nybegynder
18. november 2005 - 16:21 #4
for mig er det rimelig åbenlyst hvorfor ovenstående ikke virker.

Jeg er ikke enig i "Fultid i Call_test fotæller at det er den string den skal tage i Generate_Test."
Avatar billede cpufan Juniormester
18. november 2005 - 16:23 #5
hvad hvis du gør sådan:

dim Fultid, Dato

Function Generate_test(Test)
    FulTid = Now()
    Dato = Date()

    Generate_test = Test
End function


Function Call_test()
    Call_test = Generate_test(FulTid)
End function
Avatar billede wan31 Nybegynder
18. november 2005 - 16:29 #6
Ja det virkede jo, men hvordan forstår jeg ikke helt...
Hvad er det lige dim egentlig gør..?????
Avatar billede plx Nybegynder
18. november 2005 - 17:04 #7
argumenter bliver i vbscript default sendt med som ByRef, dvs som reference (pointer) til variablen

Når du dimmer variablen, så er del veldefineret, og vbscript kan tage referencen til variablen og sende den med. Uden dim, er den udefineret, og den kan ikke sende referencen med

Function Generate_test(ByRef Test)
Selv med dim, virker det ikke hvis du sætter ByRef på
fordi variablen ikke er tildelt værdi på det tidspunkt du kalder funktionen
Avatar billede plx Nybegynder
18. november 2005 - 17:04 #8
ByVal Test

skulle der selvfølgelig have stået
Avatar billede cpufan Juniormester
18. november 2005 - 17:30 #9
eller sagt på en anden måde

dim gør at variablen er oprettet, dog som tom.

dermed kan du lave Generate_test(Fultid)
Avatar billede wan31 Nybegynder
18. november 2005 - 18:20 #10
Ahhhh....

Og derfor virkede det da jeg kørte den første funtion, før den anden...

Men det vil sige dim faktisk laver (FulTid = "") ..???
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