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