function pointer in TList [beantwortet]

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Noa

Betreff: function pointer in TList [beantwortet]

BeitragFr, Apr 27, 2007 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich weiß nicht, vielleicht steh ich auch auf dem Schlauch, aber ist es möglich function pointer in eine TList einzufügen und daraus dann die Funktion auch wieder aufzurufen? Wenn ja, wäre ein kleines Beispiel nett ^^

Danke
  • Zuletzt bearbeitet von Noa am Fr, Apr 27, 2007 15:40, insgesamt einmal bearbeitet
 

E. Urbach

ehemals "Basicprogger"

BeitragFr, Apr 27, 2007 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Method AddLast:TLink( value:Object )

Soweit ich weiß sind Funktionen keine Objekte, daher ist dies nicht möglich.
Nicht-effizienter, aber möglicher Workaround:
Code: [AUSKLAPPEN]
Function GlobaleFunktion(iFunc:Int)
 Select iFunc
  Case FUNC_1
   ...
  Case FUNC_2
   ...
 End Select
End Function

In die Liste packst du dann einfach die gewrappten Numerics.
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik

Noa

BeitragFr, Apr 27, 2007 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Vorschlag aber der wird mir bei meinem Problem leider nicht weiterhelfen, da die TList in einem Type liegen wird und verschiedene, unbekannte Funktionen aufnehmen soll.
Also sieht es wohl so aus, als müsste ich mit Arrays arbeiten?

Suco-X

Betreff: ...

BeitragFr, Apr 27, 2007 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm..Mit Listen siehts wohl schlecht aus. Mit arrays klappt das ganze aber soweit. Die Funktionen müssen immer die gleiche Anzahl von Parametern haben, in diesem Fall 1.

Code: [AUSKLAPPEN]

Strict


Local Array:Int(Str:String)[1]

array[0] = Print

Local NewPrint(Str:String)

NewPrint = Array[0]

NewPrint("Test Test")
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Noa

BeitragFr, Apr 27, 2007 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, das kenn ich ja soweit, hatte nur gehofft, man könnte auch Listen verwenden ^^

Jedenfalls Danke für eure Mühe ^^

Suco-X

Betreff: ....

BeitragFr, Apr 27, 2007 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst es eigentlich auch in einer Liste verwenden.

Code: [AUSKLAPPEN]

Strict


Type TFunction
   Field FuncPtr(Str:String)

   Function Create:TFunction(Func(Str:String))
      Local Instance:TFunction
      instance = New TFunction
      Instance.FuncPtr = Func
      Return Instance
   End Function
   
   Method Get:Int(Str:String)()
      Return FuncPtr
   End Method
End Type


Local List:TList = New TList
List.AddLast(TFunction.Create(Print))
List.AddLast(TFunction.Create(DebugLog))

For Local obj:TFunction = EachIn List
   Obj.Get()("Test Test")
Next


Aber der Sinn deines Anliegen bleibt mir noch ein Rätsel. Wüßte nicht, wofür man sowas bräuchte.
Mfg
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Moep

BeitragMo, Mai 21, 2007 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab sowas auch neulich gebraucht/brauche es immer noch.

Das ist ganz nützlich für mich, da ich eine art Scriptsprache in meine "EntityEngine" einbauen will.Damit kann man dann ganz leicht neue funktionen einfügen in die scriptsprache.
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group