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.
E R L E D I G T Unterproramm Aufruf aus einer Variablen
- Pure_Beginner
- Beiträge: 247
- Registriert: 29.09.2011 21:49
- Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
- Wohnort: Brühl
E R L E D I G T Unterproramm Aufruf aus einer Variablen
Zuletzt geändert von Pure_Beginner am 10.08.2012 00:55, insgesamt 1-mal geändert.
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Re: Unterproramm Aufruf aus einer Variablen heraus
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
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
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
- Pure_Beginner
- Beiträge: 247
- Registriert: 29.09.2011 21:49
- Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
- Wohnort: Brühl
Re: Unterproramm Aufruf aus einer Variablen heraus
@DrShrek
Danke für Deine schnelle Antwort, bin leider totaler Anfänger und weiß nicht mal was ne MAP ist.
Grüße
Christian
Danke für Deine schnelle Antwort, bin leider totaler Anfänger und weiß nicht mal was ne MAP ist.
Grüße
Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Re: Unterproramm Aufruf aus einer Variablen heraus
Hallo Christian,
was Shrek meint, ist ungefähr so was:
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
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))
lg
Josh
P.S.: Bin jetzt gespannt, wie lange es dauert, bis mein CallFunctionFast angemeckert wird

Re: Unterproramm Aufruf aus einer Variablen heraus
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)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- Pure_Beginner
- Beiträge: 247
- Registriert: 29.09.2011 21:49
- Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
- Wohnort: Brühl
Re: Unterproramm Aufruf aus einer Variablen heraus
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.
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.
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col