home *** CD-ROM | disk | FTP | other *** search
-
- { 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.
-