Avatar billede c971875 Nybegynder
19. april 2000 - 08:48 Der er 4 kommentarer og
2 løsninger

Kald af funktion når man har navnet som streng værdi.

Jeg er ved at lave et program som skal modtage en fil, med en masse text og nogle få kommandoer. Kommandoerne er indesluttet af tags <%%> lidt ligesom asp. ()
Mellem de tags skriver jeg navnet på den funktion der skal kaldes for at generere den rigtige text.
Som det er nu, er jeg nødt til at bruge en if sætning i stil med:
"If InStr(command, "prop_ID_def") Then
        callcommand = callcommand & prop_ID_def"
hvor callcommand er navnet på funktionen der styrer hvilke andre  funktioner der skal kaldes, command er strengen der indeholder funktionsnavnet (" prop_ID_def ") og prop_ID_def er funktionen jeg ønsker at kalde.

Det, jeg gerne vil, er at bruge strengen til at kalde funktionen direkte. Lidt i stil med:

callcommand = CallByName(command)

Jeg har fundet CallByName functionen i VB dokumnentationen, men det ser ud som om man skal angive et object som den ønskede funktion skal afvikles på. Det har jeg ikke. Kun en samling funktioner der opererer på strenge.
Skal jeg lave et nyt object der indeholder disse funktioner (og i så fald hvordan?) eller er der en anden måde.

Når jeg kun giver 15 point, er det fordi jeg har på fornemmeren at det her er herrenemt, når man ved hvordan. Det går jeg desværre bare ikke!!!
Avatar billede c971875 Nybegynder
19. april 2000 - 08:49 #1
Ups... mig igen.
En anden af de ting jeg godt vil kunne gøre er at angive en streng der både indeholder et funktionsnavn, og nogle parametre som skal passes til den funktion.
Avatar billede winkill Nybegynder
19. april 2000 - 10:35 #2
Her er et lille eksempel på hvordan CallByName bruges:

Private Sub Form_Load()
    Dim t(0) As String
    t(0) = "Test"
    Call CallByName(Me, "TestSub", VbMethod, t)
End Sub

Public Sub TestSub(t1() As String)
    Caption = t1(0)
End Sub
Avatar billede c971875 Nybegynder
19. april 2000 - 11:08 #3
Nu sidder jeg og  udvikler det her i Visual Basic for app. under Access 97. Jeg får fejlen
Compile error: sub or function not defined, når jeg bruger
CallByName(Me, command, 1)

Da det er en compiler error, kan det vel ikke skyldes at command indeholder et ugyldigt navn?
Avatar billede Slettet bruger
19. april 2000 - 14:07 #4
I Access skal du bruge funktionen Run

Run "Testsub","parameter1","Parameter2",.........
Avatar billede c971875 Nybegynder
19. april 2000 - 14:37 #5
jordan, your'e a genious,
winkill, sorry buddy
Avatar billede c971875 Nybegynder
19. april 2000 - 15:23 #6
Kan det passe at man kun kan kalde subs, og ikke funktioner på denne måde?
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