home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 05 / t4_upd / procparm.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-02-24  |  1.2 KB  |  43 lines

  1. PROGRAM ProcParmDemo;
  2.  
  3. (* als Parameter zu übergebende Funktion; muß
  4.    unbedingt im FAR-Modell kompiliert werden! *)
  5. {$F+}
  6. FUNCTION Sine (x :REAL) :REAL;
  7.  
  8. BEGIN
  9.   Sine := Sin(x)
  10. END;
  11. {$F-}
  12.  
  13.  
  14. (* ein einen Prozeduralparameter verwendendes Unter-
  15.    programm; übergeben wird dabei ein Zeiger (@...) auf
  16.    die entsprechende Prozedur/Funktion:                  *)
  17.  
  18. PROCEDURE Evaluate (x :REAL; FuncPtr :POINTER);
  19.  
  20. CONST
  21.   f_Addr :POINTER = NIL; (* Stelle im Datenseg. (wichtig!)
  22.                        zum "Merken" der Prozedur-Adresse *)
  23.  
  24.   (* dieses Inline-Makro bewirkt den Ansprung der Para-
  25.      meterprozedur. Die Deklaration des Makro-Kopfes muß
  26.      genau der Syntax der anzuspringenden Prozedur ent-
  27.      sprechen!                                           *)
  28.   FUNCTION f (x :REAL) :REAL;
  29.     INLINE ($3E/$FF/$1E/f_Addr); (* CALL FAR DS:[f_Addr] *)
  30.  
  31. BEGIN
  32.   f_Addr := FuncPtr;              (* CALL initialisieren *)
  33.                     (* ab hier folgt dann die Anwendung: *)
  34.   Write ('x = ',x:6:3);
  35.   WriteLn ('   f(x) = ', f(x):6:3);
  36. END;
  37.  
  38.  
  39. BEGIN
  40.         (* so wird ein Prozedur als Parameter übergeben: *)
  41.   Evaluate (1.0, @Sine);
  42. END.
  43.