home *** CD-ROM | disk | FTP | other *** search
-
- { Copyright (c) 1985, 87 by Borland International, Inc. }
-
- program ProcPtr;
- { Demonstriert, wie über einen Zeiger und inline-Anweisungen zwei
- verschiedene Routinen (mit denselben Parametern) aufgerufen werden
- können.
- Die Prozedur CallProc ist als INLINE deklariert und wird vom Compiler
- bei jedem Aufruf durch das Programm als eine Art Makro eingesetzt
- (s. Kapitel 25). CallProc deklariert dieselben Parameter wie die
- Prozeduren FirstProc und OtherProc. Die globale Variable
- ProcAddr enthält die Adresse der aufzurufenden Prozedur - sie bestimmt,
- ob ein Aufruf von CallProc entweder FirstProc oder OtherProc aktiviert.
-
- HINWEIS: Die hier gezeigten Techniken sollten nur von Programmierern
- mit Erfahrung in Maschinensprache angewendet werden.
- }
-
- var
- ProcAddr : Pointer;
- i : Integer;
-
- procedure CallProc(var i : Integer; w : Word; s : string);
- inline($FF/$1E/ProcAddr); { CALL FAR [ProcAddr] }
-
- {$F+}
- procedure FirstProc(var i : Integer; w : Word; s : string);
- begin
- Writeln('FirstProc:');
- Writeln('i = ', i,' w = ', w, ' s = ', s);
- end;
- {$F-}
-
- {$F+}
- procedure OtherProc(var i : Integer; w : Word; s : string);
- begin
- Writeln('OtherProc:');
- Writeln('i = ', i,' w = ', w, ' s = ', s);
- end;
- {$F-}
-
- begin
- ProcAddr := @FirstProc; { setzt ProcAddr auf FirstProc }
- Writeln('Aufruf von CallProc, ProcAddr = FirstProc.... ');
- CallProc(i, 7, 'irgendein Text');
- ProcAddr := @OtherProc; { setzt ProcAddr auf OtherProc }
- Writeln('Aufruf von CallProc, ProcAddr = OtherProc.... ');
- CallProc(i, 5, 'noch mehr Text');
- end.