home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Devil's Doorknob BBS Capture (1996-2003)
/
devilsdoorknobbbscapture1996-2003.iso
/
Dloads
/
OTHERUTI
/
TCPP30-3.ZIP
/
EXAMPLES.ZIP
/
CPASDEMO.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-02-18
|
5KB
|
129 lines
{ Copyright (c) 1987,1991 by Borland International, Inc. }
program CPASDEMO;
(*
This program demonstrates how to interface Turbo Pascal and Turbo C++.
Turbo C++ is used to generate an .OBJ file (CPASDEMO.OBJ). Then
this .OBJ is linked into this Turbo Pascal program using the {$L}
compiler directive.
NOTES:
1. Data declared in the Turbo C++ module cannot be accessed from
the Turbo Pascal program. Shared data must be declared in
Pascal.
2. If the C functions are only used in the implementation section
of a unit, declare them NEAR. If they are declared in the
interface section of a unit, declare them FAR. Always compile
the Turbo C++ modules using the large memory model.
3. Turbo C++ runtime library routines cannot be used because their
modules do not have the correct segment names. However, if you
have the Turbo C++ runtime library source (available from
Borland), you can use individual library modules by recompiling
them using Pascal conventions. If you do recompile them, make
sure that you include prototypes in your C module for all C
library functions that you use.
4. Some of the code that Turbo C++ generates are calls to internal
routines. These cannot be used without recompiling the relevant
parts of the Turbo C++ runtime library source code.
In order to run this demonstration program you will need the following
files:
TCC.EXE and CTOPAS.CFG or
TC.EXE and CTOPAS.TC
To run the demonstration program CPASDEMO.EXE do the following:
1. First create a CPASDEMO.OBJ file compatible with Turbo Pascal 4.0
or later using Turbo C++.
a) If you are using the Turbo C++ integrated environment (TC.EXE)
then at the DOS prompt execute:
TC CTOPAS.PRJ
then create the .OBJ file by pressing ALT-F9.
b) If you are using the Turbo C++ command line version (TCC.EXE)
then at the DOS prompt execute:
TCC +CTOPAS.CFG CPASDEMO.C
Note: Use the same configuration file (CTOPAS.CFG or CTOPAS.PRJ)
when you create your own Turbo C++ modules for use with
Turbo Pascal
2. Compile and execute the Turbo Pascal program CPASDEMO.PAS
This simple program calls each of the functions defined in the Turbo C++
module. Each of the Turbo C++ functions changes the current display color
by calling the Turbo Pascal procedure SetColor. }
*)
uses Crt;
var
Factor : Word;
{$F+} { Force Far Calls for calling to and from Turbo C }
{$L CPASDEMO.OBJ} { link in the Turbo C++-generated .OBJ module }
function Sqr(I : Integer) : Word; external;
{ Change the text color and return the square of I }
function HiBits(W : Word) : Word; external;
{ Change the text color and return the high byte of W }
function Suc(B : Byte) : Byte; external;
{ Change the text color and return B + 1 }
function Upr(C : Char) : Char; external;
{ Change the text color and return the upper case of C }
function Prd(S : ShortInt) : ShortInt; external;
{ Change the text color and return S - 1 }
function LoBits(L : LongInt) : LongInt; external;
{ Change the text color and return the low word of L }
procedure StrUpr(var S : string); external;
{ Change the text color and return the upper case of S - Note that the Turbo }
{ C++ routine must skip the length byte of the string. }
function BoolNot(B : Boolean) : Boolean; external;
{ Change the text color and return NOT B }
function MultByFactor(W : Word) : Word; external;
{ Change the text color and return W * Factor - note Turbo C++'s access of }
{ Turbo Pascal's global variable. }
procedure SetColor(NewColor : Byte); { A procedure that changes the current }
begin { display color by changing the CRT }
TextAttr := NewColor; { variable TextAttr }
end; { SetColor }
var
S : string;
begin
Writeln(Sqr(10)); { Call each of the functions defined }
Writeln(HiBits(30000)); { passing it the appropriate info. }
Writeln(Suc(200));
Writeln(Upr('x'));
Writeln(Prd(-100));
Writeln(LoBits(100000));
S := 'abcdefg';
StrUpr(S);
Writeln(S);
Writeln(BoolNot(False));
Factor := 100;
Writeln(MultbyFactor(10));
SetColor(LightGray);
end.