Byte Ptr zu Func

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Nemesis

Betreff: Byte Ptr zu Func

BeitragDi, Jan 18, 2005 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bmax convertiert von Functionspointer zu Byte Ptr automatisch. aber wie bekomme ich aus nem Byte Ptr wieder ne Function?

Edit: Der Hintergrund: Ich möchte so eine art Eventsystem machen.

Da habe ich dann eine Function AddEventHandler zb. die kriegt den namen des events und eine callback function als parameter. Nun ist die Callback function natürlich je nach Event etwas etwas anders ( andere parameter) und deshalb dachte ich mir ich nehme einen Byte Ptr -> blitzbasic castet automatisch die function zu byte ptr und ich mach in der AddEventHandler je nach event type wieder ne function draus (mit den entsprechenden parametern)

Ratchet

BeitragDi, Aug 11, 2009 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe das selbe Problem und bis lang noch eine Lösung gefunden. Das muss doch irgendwie gehen.

Code: [AUSKLAPPEN]
Function MeineFunktion()
   Print("Hallo Welt")
End Function

Type TTest
   Field Func: Byte Ptr
End Type

x: TTest = New TTest
x.Func = MeineFunktion

x.Func()


Bekomme dann immer die Meldung Expression of type 'Byte Ptr' cannot invoked
Was ist da bloß falsch?
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Suco-X

Betreff: ....

BeitragDi, Aug 11, 2009 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Strict

Function MeineFunktion()
   Print("Hallo Welt")
End Function

Type TTest
   Field Func: Byte Ptr

   Method DoIt()
      Local tmp() = Func
      tmp()
   End Method
End Type

Local x: TTest = New TTest
x.Func = MeineFunktion
x.doIt()


!?!?
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Ratchet

BeitragDi, Aug 11, 2009 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, wunderbar. Dankeschön Smile
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

BtbN

BeitragDi, Aug 11, 2009 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Problem dabei könnte nur werden, wenn man versehentlich falsche Parameter, also nicht zur original-funktion passende, übergibt, fliegt einem das Programm um die ohren.
Die Bmax-Eigenen Event-Handler callbacks haben deshalb eine standardisierte signatur.
 

jsp

BeitragDi, Aug 11, 2009 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch mal eine andere Variante mit Function als Parameter:

Code: [AUSKLAPPEN]
Strict

Function MeineFunktion()
   Print("Hallo Welt")
End Function

Type TTest
   Field Func:Int()

   Method DoIt(Func())
      Local tmp() = Func
      tmp()
   End Method
End Type

Local x: TTest = New TTest
x.doIt(MeineFunktion)
Logic Gui Professional a Gui Designer for MaxGui

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group