home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD2.mdf
/
c
/
tcpp
/
examples
/
cpasdemo.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1990-06-09
|
5KB
|
129 lines
{ Copyright (c) 1987,88,90 by Borland International, Inc. }
program CPASDEMO;
(*
Dieses Programm zeigt die Schnittstelle zwischen Turbo Pascal und Turbo C.
Mit Turbo C wird eine .OBJ-Datei (CPASDEMO.OBJ) erzeugt, die dann mit
Hilfe der Compiler-Direktive {$L} in dieses Turbo Pascal-Programm
eingebunden wird.
ANMERKUNGEN:
1. Das Turbo Pascal-Programm kann nicht auf Datendeklarationen des
Turbo C-Moduls zugreifen. Die Daten müssen daher im Turbo Pascal-
Programm deklariert werden.
2. Wenn die C-Funktionen nur im Implementierungsbereich einer Unit
verwendet werden, deklarieren Sie sie als NEAR. Wenn sie im Interface-
bereich verwendet werden, deklarieren Sie sie als FAR. Kompilieren Sie
die Turbo C-Module immer mit dem Speichermodell SMALL.
3. Die Routinen der Turbo C Runtime-Bibliothek können nicht verwendet
werden, da sie nicht die korrekten Segmentnamen besitzen. Wenn Sie
aber die Quellen der Turbo C Runtime-Bibliothek besitzen (von Borland
erhältlich), dann können Sie die Bibliotheksmodule rekompilieren und
unter Pascal-Konventionen verwenden. Falls Sie rekompilieren, achten
Sie darauf, daß Sie für alle Bibliotheksfunktionen, die Sie verwenden,
Prototypen in Ihr C-Modul aufnehmen.
4. Teile des von Turbo C generierten Codes sind Aufrufe interner Routinen.
Diese können nicht verwendet werden, ohne daß die entsprechenden Teile
des Quellcodes der Turbo C Runtime-Bibliothek rekompiliert werden.
Wenn Sie dieses Demonstrationsprogramm verwenden wollen, benötigen Sie
folgende Dateien:
TCC.EXE und CTOPAS.CFG
oder
TC.EXE und CTOPAS.TC
Um das Demonstrationsprogramm CPASDEMO.EXE zu starten, führen Sie folgende
Schritte aus:
1. Erzeugen Sie mit Turbo C eine mit Turbo Pascal 4.0 oder höher kompatible
Datei CPASDEMO.OBJ.
a) Wenn Sie Turbo C's integrierte Umgebung verwenden (TC.EXE), geben Sie
am DOS-Prompt
TC CTOPAS.PRJ
ein. Mit ALT-F9 erzeugen Sie dann die .OBJ-Datei.
b) Wenn Sie Turbo C's Kommandozeilen-Version verwenden (TCC.EXE), geben
Sie am DOS-Prompt
TCC +CTOPAS.CFG CPASDEMO.C
ein. Beachten Sie: Die Konfigurationsdatei (CTOPAS.CFG oder CTOPAS.PRJ)
muß die gleiche sein, wenn Sie Ihre eigenen Turbo C-Module, die unter
Turbo Pascal laufen sollen, erzeugen.
2. Kompilieren Sie das Turbo Pascal-Programm CPASDEMO.PAS, und führen Sie
es aus.
Dieses einfache Programm ruft jede im Turbo C-Modul definierte Funktion
auf. Jede der Turbo C-Funktionen ändert die aktuelle Bildschirmfarbe (durch
Aufruf der Turbo Pascal-Prozedur SetColor. }
*)
uses Crt;
var
Factor : Word;
{$L CPASDEMO.OBJ} { das Turbo C-.OBJ-Modul einbinden }
function Sqr(I : Integer) : Word; external;
{ Die Farbe des Textes ändern und das Quadrat von I zurückgeben }
function HiBits(W : Word) : Word; external;
{ Die Farbe des Textes ändern und das höchstwertige Byte von W zurückgeben }
function Suc(B : Byte) : Byte; external;
{ Die Farbe des Textes ändern und B + 1 zurückgeben }
function Upr(C : Char) : Char; external;
{ Die Farbe des Textes ändern und den Großbuchstaben von C zurückgeben }
function Prd(S : ShortInt) : ShortInt; external;
{ Die Farbe des Textes ändern und S - 1 zurückgeben }
function LoBits(L : LongInt) : LongInt; external;
{ Die Farbe des Textes ändern und die untere Hälfte von L zurückgeben }
procedure StrUpr(var S : string); external;
{ Die Farbe des Textes ändern und S in Großbuchstaben zurückgeben - die }
{ Turbo C-Routine muß dazu das Längenbyte des Strings überspringen. }
function BoolNot(B : Boolean) : Boolean; external;
{ Die Farbe des Textes ändern und NOT B zurückgeben }
function MultByFactor(W : Word) : Word; external;
{ Die Farbe des Textes ändern und W * Faktor zurückgeben - beachten Sie }
{ Turbo C's Zugriff auf Turbo Pascal's globale Variablen. }
procedure SetColor(NewColor : Byte); { Die Prozedur ändert die aktuellen }
begin { Anzeigefarben, indem die CRT-Variable}
TextAttr := NewColor; { TextAttr geändert wird }
end; { SetColor }
var
S : string;
begin
Writeln(Sqr(10)); { Alle definierten Funktionen aufrufen }
Writeln(HiBits(30000)); { und die passenden Infos übergeben }
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.