Seite 1 von 1
E R L E D I G T Unterproramm Aufruf aus einer Variablen
Verfasst: 09.08.2012 12:45
von Pure_Beginner
Hallo Gemeinde,
habe mal wieder ein schier unlösbares Problem (aus meiner Sicht der Dinge).
In einer Variablen befindet sich der Name eine Procedure die ich aufrufen möchte.
Wie kann ich das bewerkstelligen ?
Für Eure Hilfe wäre ich sehr dankbar.
Re: Unterproramm Aufruf aus einer Variablen heraus
Verfasst: 09.08.2012 12:47
von DrShrek
Da gibt es mehrere Lösungen.
Versuche es z.B. mal mit einer Map.
Value zeigt dabei auf den Funktionspointer
Für den Key musst Du dir halt was ausdenken z.B.: den Funktionsnamen
Re: Unterproramm Aufruf aus einer Variablen heraus
Verfasst: 09.08.2012 12:51
von Pure_Beginner
@DrShrek
Danke für Deine schnelle Antwort, bin leider totaler Anfänger und weiß nicht mal was ne MAP ist.
Grüße
Christian
Re: Unterproramm Aufruf aus einer Variablen heraus
Verfasst: 09.08.2012 13:21
von Josh
Hallo Christian,
was Shrek meint, ist ungefähr so was:
Code: Alles auswählen
Procedure Proc1 ()
Debug "Procedure1 wurde aufgerufen"
EndProcedure
Procedure Proc2 ()
Debug "Procedure 2 wurde aufgerufen"
EndProcedure
Procedure Proc3 ()
Debug "Procedure 3 wurde aufgerufen"
EndProcedure
NewMap Procedures.i()
Define ret.s
Procedures("Proc1") = @Proc1()
Procedures("Proc2") = @Proc2()
Procedures("Proc3") = @Proc3()
ret = InputRequester ("Test", "Geben Sie den Prozedurnamen ein", "Proc1")
CallFunctionFast (Procedures(ret))
Du musst das bereits alles zur Kompilierungszeit vorbereitet haben, da zur Laufzeit die Namen der Prozeduren nicht mehr bekannt sind.
lg
Josh
P.S.: Bin jetzt gespannt, wie lange es dauert, bis mein CallFunctionFast angemeckert wird

Re: Unterproramm Aufruf aus einer Variablen heraus
Verfasst: 09.08.2012 14:28
von STARGÅTE
Hier mal mit Prototype:
Code: Alles auswählen
; Funktionen definieren
Procedure Plus(A.f, B.f)
ProcedureReturn A + B
EndProcedure
Procedure Mal(A.f, B.f)
ProcedureReturn A * B
EndProcedure
Procedure Hoch(A.f, B.f)
ProcedureReturn Pow(A, B)
EndProcedure
; Prototyp, wie eine Funktion aussieht.
Prototype Function(Wert1.f, Wert2.f)
Global NewMap *Function() ; Liste von Funktionen
*Function("plus") = @Plus()
*Function("mal") = @Mal()
*Function("hoch") = @Hoch()
; Beispiel
Procedure.f Berechne(Operation.s, Wert1.f, Wert2.f)
Protected Function.Function = *Function(LCase(Operation)) ; Funktion finden
If Function
ProcedureReturn Function(Wert1, Wert2) ; Funktion aufrufen und Ergebnis zurückgeben
EndIf
EndProcedure
Debug Berechne("Plus", 2, 3)
Debug Berechne("MAL", 2, 3)
Debug Berechne("hoch", 2, 3)
Debug Berechne("minus", 2, 3)
Re: Unterproramm Aufruf aus einer Variablen heraus
Verfasst: 09.08.2012 23:28
von Pure_Beginner
Hallo zusammen,
besten Dank für eure Tipps,
das ist alles etwas schwierig und ich muss mich erst durchwursteln.
Einstweilen habe ich das ganze mit einer Select Case Anweisung gelöst.
Bestimmt nicht die eleganteste Art und auch nicht die schnellste aber bei meinem Kenntnisstand die Verständlichste.
Nochmals besten Dank und ich bleibe dran.