linux-l: OT: Callback-Proceduren in Pascal
Michael Müller
mueller_michael at nikocity.de
So Feb 13 10:03:38 CET 2000
Hallo Philipp!
Wenn ich Dich richtig verstehe, willst Du eine Funktion über einen
Zeiger rufen, oder? (Was bedeutet Callback?)
Ich habe soetwas schon einmal gemacht; aber meine Pascal-Zeiten sind
schon eine Weile her und ich finde meinen Source-Code gerade nicht.
Also habe ich in meinen Turbo Pascal 4.0 Handbücher geschaut. Dort
steht:
Addr-Funktion
Funtion: liefert die Adresse des angegebenen Objektes zurück.
Deklaration: Addr(x)
Ergebnistyp: Pointer
Erläuterung: x ist eine beliebige Variable oder der Bezeichner einer
Prozedur oder Funktion, die nicht als inline deklariert ist. Das
Ergebnis ist ein Zeiger, der auf x zeigt (also die Adresse von x
enthält). Das Ergebnis von Addr ist wie nil zuweisungskompatible zu
allen Zeiger-Typen.
Hinweis: Der Adress-Operator @ hat dasselbe Ergebnis wie die
Funktion Addr.
Querverweis: Ptr
Beispiel:
var
p : Pointer;
begin
p := Addr(p); { p zeigt jetzt auf sich selbst }
end.
Ich denke, auf Dein Problem übertragen, wird es wohl so gehen:
procedure hello;
begin
writeln("Hello World");
end;
var
funcp = pointer;
begin
funcp = @hello;
funcp; { hier bin ich mir nicht so sicher }
end.
Ich hoffe, daß es Dir weiterhilft!
Michael Müller
P.S. Ich werde noch mal ein bischen nach meinen Quellen suchen!
_
> Hi,
>
> ich muss mich (leider) immernoch mit Pascal rumärgern, und
> stehe vor dem Problem, wie ich in pascal Callback-Proceduren
> realisieren kann.
>
> In C würde ich das so schreiben (berichtigt mich, wenn's besser geht)
> ----- schnipp -----
> #include <stdio.h>
> hello()
> {
> printf("Hello World\n");
> }
> main()
> {
> int (*funcp)();
> int hello();
> funcp = hello;
> (*funcp)();
> }
> ----- schnapp -----
>
> Aber wie geht das in Pascal? (leider auch noch das 16bittige TP-Win)
>
> AVE!
> phils
>
> --
> PHILIPP SCHMIDT / phils - - + - - > phils at gmx.net
> Phone: +49(30)66922513 ` - - > http://home.pages.de/~phils/
> --> ONLINE fuer Berlin & BRB? IN-Berlin! (info at in-berlin.de) <--
Mehr Informationen über die Mailingliste linux-l