Avatar billede ravnborg Nybegynder
20. juli 2010 - 01:14 Der er 11 kommentarer og
1 løsning

Functions navn gemt i variabel??

kan man kalde en function ud fra en variabel?

feks.

varFunc = FindNavn
call varFunc() 'skulle nu køre functionen FindNAvn
Avatar billede arne_v Ekspert
20. juli 2010 - 01:49 #1
Eksempel:

<%
Function FindNavne()
    Response.Write "Det virker"
End Function
   
Set varFunc = GetRef("FindNavne")
Call varFunc
%>
Avatar billede ksoren Nybegynder
20. juli 2010 - 01:50 #2
Avatar billede ksoren Nybegynder
20. juli 2010 - 01:52 #3
... GetRef er også en kandidat
Avatar billede foe Nybegynder
20. juli 2010 - 15:32 #4
Du kan også prøve med noget OOP og lave en Class med din funktion som Public Function. Så kan du instantiere Objektet i et valgfrit variabelnavn?
Avatar billede ravnborg Nybegynder
01. august 2010 - 22:38 #5
Jeg har siddet og rodet lidt med det her problem uden at have løst det.

Lige lidt mere beskrivelse:

jeg har omkring 50 funktioner på en side. Det er kun en af dem der skal køres. Hvilken en bestemmes ud fra url'en

minSide.asp?func=funcNr34

Ud fra dette her, skal den køre functionen med navnet funcNr34

Kan I give et eksempel på hvordan det kan gøres?
Avatar billede arne_v Ekspert
01. august 2010 - 22:47 #6
prøv:

Set varFunc = GetRef(Request("func"))
Call varFunc
Avatar billede ravnborg Nybegynder
07. august 2010 - 22:36 #7
Så kom der lige en ny dimission på problemet, jeg bliver nødt til at have en parentes med i functionen.

Jeg har nu prøvet at skrue det sammen sådan her, men det virker desværre ikke.

if request("opg") = "plus1" then
    Set varFunc = GetRef("FuncPlus1(opgave, resultat, FTal, ATal)")
end if

Call varFunc

Hvordan får jeg dette til at virke?
Avatar billede arne_v Ekspert
08. august 2010 - 03:16 #8
Du skal ikke angive args i getref men kun i kald.

Eksempel:

<%
Function FindNavne(s)
    Response.Write "Det virker med " & s
End Function
   
Set varFunc = GetRef("FindNavne")
Call varFunc("ABC")
%>
Avatar billede ravnborg Nybegynder
08. august 2010 - 15:22 #9
Her når jeg sidder og arbejder lidt med det, kan jeg se det ender med at de forskellige functioner får nogle forskellige args.

Her er et lille udpluk af de forskellige functioner, hvoraf der KUN er en der skal kaldes, og det bestemmes ud fra URL'en f.eks. minSide.asp?func=FuncPlus5


call FuncPlus1(opgave,resultat,FTal,ATal)
call FuncPlus5(opgave,resultat,FTal,ATal,TTal)
call brok3(opgave,resultat,hel1,Taeller1,Naevner1,hel2,Taeller2,Naevner2)
call FuncKurs2(opgave,resultat,Land,Kurs,FTal)

Er der ikke en smart måde, hvor jeg gør sådan, at hver gang jeg kalder en function er det den der er defineret i url'en?
Eller bliver jeg nødt til at bygge mit Call op i en række if sætninger?
Avatar billede arne_v Ekspert
08. august 2010 - 20:49 #10
Hvis du vil bruge getref til at skå navnet op skal du have en wrapper uden argumenter.

Funcrtion FP1()
    call FuncPlus1(opgave,resultat,FTal,ATal)
End Function

og så sende FP1 med over og kalde den.
Avatar billede ravnborg Nybegynder
08. august 2010 - 21:21 #11
Yes, nu virker det.
Mange tak for hjælpen, og din tålmodighed ;-)

Arne_v opret bare et svar
Avatar billede arne_v Ekspert
08. august 2010 - 21:33 #12
svar
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