home *** CD-ROM | disk | FTP | other *** search
-
- { Copyright (c) 1985, 87 by Borland International, Inc. }
-
- program ProcPtr;
- { This example program shows how to use a pointer and an inline
- directive to call 2 different procedures with the same parameters.
- CallProc is an inline directive (or macro) with the same parameters
- as both One and TheOther. A global pointer variable, ProcAddr,
- contains the address of the procedure to call. Then a call is made
- to CallProc, which in turn does a far call to the address stored
- in ProcAddr.
-
- Warning: This technique is recommended only for those programmers with
- assembly language programming experience.
-
- For more information about inline directives, refer to P-367 in the
- Owner's Handbook.
- }
-
- var
- ProcAddr : pointer;
-
- procedure CallProc(var i : integer; w : word; s : string);
- Inline($FF/$1E/ProcAddr);
-
- {$F+}
- procedure One(var i : integer; w : word; s : string);
- begin
- Writeln('First One,');
- end;
- {$F-}
-
- {$F+}
- procedure TheOther(var i : integer; w : word; s : string);
- begin
- Writeln('then TheOther');
- end;
- {$F-}
-
- var
- i : integer;
- begin
- ProcAddr := @One;
- CallProc(i, 7, 'data'); { first call one }
- ProcAddr := @TheOther;
- CallProc(i, 5, 'more data'); { then call the other }
- end.