Funktions- und Prozedurzeiger
In OWBasic können globale Variablen deklariert werden, die auf (nicht eingebaute) Funktionen oder Prozeduren zeigen.
Bevor er verwendet werden kann, muß der Funktionszeiger zunächst deklariert werden:
DIM <name>~(PROC <paramlist>)[<size>]
DIM <name>~(FUNC<return type> <paramlist>)[<size>] |
<paramlist> gibt die Parameter der Prozedur/Funktion an und hat folgenden Aufbau:
[VAR] <type suffix> [[]], ... |
Einem Funktionszeiger kann man einen Wert auf die gleiche Weise wie bei anderen Variablen zuweisen; die Adresse einer Prozedur läßt sich über
, die einer Funktion über
abfragen.
Man kann einem Funktionszeiger auch den symbolischen Wert #NULL zuweisen und ihn in Integer konvertieren, um ihn darauf abzufragen. Dies ist sinnvoll bei optionalen Callback-Funktionen, die nur aufgerufen werden sollen, wenn sie auf etwas zeigen.
Aufgerufen wird ein Funktionszeiger durch die Direktive CALL:
CALL <procptrname> <parameters>
CALL <type suffix> (<funcptrname> <parameters>) |
Beispiel:
DIM screeninit~(PROC)[0]
DIM bname~(FUNC$ %)[0]
PROC drawscreen
IF INT(screeninit)<>0 THEN
CALL screeninit
ENDIF
TEXTBOX CALL$(bname RND(2)),10,30,149,40,0
ENDP
FUNC name$ n
RETURN "Nr. "+STRING(n)
PROC init
CLS 2
BOX 0,0,159,159
ENDP
screeninit=PROC(init)
bname=FUNC(name$)
drawscreen |
|