home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / tcpp / examples / cpasdemo.pas < prev    next >
Pascal/Delphi Source File  |  1990-06-09  |  5KB  |  129 lines

  1.  
  2. {         Copyright (c) 1987,88,90 by Borland International, Inc.          }
  3.  
  4. program CPASDEMO;
  5. (*
  6.   Dieses Programm zeigt die Schnittstelle zwischen Turbo Pascal und Turbo C.
  7.   Mit Turbo C wird eine .OBJ-Datei (CPASDEMO.OBJ) erzeugt, die dann mit
  8.   Hilfe der Compiler-Direktive {$L} in dieses Turbo Pascal-Programm
  9.   eingebunden wird.
  10.  
  11.   ANMERKUNGEN:
  12.     1. Das Turbo Pascal-Programm kann nicht auf Datendeklarationen des
  13.        Turbo C-Moduls zugreifen. Die Daten müssen daher im Turbo Pascal-
  14.        Programm deklariert werden.
  15.  
  16.     2. Wenn die C-Funktionen nur im Implementierungsbereich einer Unit
  17.        verwendet werden, deklarieren Sie sie als NEAR. Wenn sie im Interface-
  18.        bereich verwendet werden, deklarieren Sie sie als FAR. Kompilieren Sie
  19.        die Turbo C-Module immer mit dem Speichermodell SMALL.
  20.  
  21.     3. Die Routinen der Turbo C Runtime-Bibliothek können nicht verwendet
  22.        werden, da sie nicht die korrekten Segmentnamen besitzen. Wenn Sie
  23.        aber die Quellen der Turbo C Runtime-Bibliothek besitzen (von Borland
  24.        erhältlich), dann können Sie die Bibliotheksmodule rekompilieren und
  25.        unter Pascal-Konventionen verwenden. Falls Sie rekompilieren, achten
  26.        Sie darauf, daß Sie für alle Bibliotheksfunktionen, die Sie verwenden,
  27.        Prototypen in Ihr C-Modul aufnehmen.
  28.  
  29.     4. Teile des von Turbo C generierten Codes sind Aufrufe interner Routinen.
  30.        Diese können nicht verwendet werden, ohne daß die entsprechenden Teile
  31.        des Quellcodes der Turbo C Runtime-Bibliothek rekompiliert werden.
  32.  
  33.   Wenn Sie dieses Demonstrationsprogramm verwenden wollen, benötigen Sie
  34.   folgende Dateien:
  35.  
  36.     TCC.EXE und CTOPAS.CFG
  37.     oder
  38.     TC.EXE und CTOPAS.TC
  39.  
  40.   Um das Demonstrationsprogramm CPASDEMO.EXE zu starten, führen Sie folgende
  41.   Schritte aus:
  42.  
  43.   1. Erzeugen Sie mit Turbo C eine mit Turbo Pascal 4.0 oder höher kompatible
  44.      Datei CPASDEMO.OBJ.
  45.  
  46.     a) Wenn Sie Turbo C's integrierte Umgebung verwenden (TC.EXE), geben Sie
  47.        am DOS-Prompt
  48.  
  49.        TC CTOPAS.PRJ
  50.        
  51.        ein. Mit ALT-F9 erzeugen Sie dann die .OBJ-Datei.
  52.  
  53.     b) Wenn Sie Turbo C's Kommandozeilen-Version verwenden (TCC.EXE), geben
  54.        Sie am DOS-Prompt
  55.  
  56.        TCC +CTOPAS.CFG CPASDEMO.C
  57.  
  58.        ein. Beachten Sie: Die Konfigurationsdatei (CTOPAS.CFG oder CTOPAS.PRJ)
  59.        muß die gleiche sein, wenn Sie Ihre eigenen Turbo C-Module, die unter
  60.        Turbo Pascal laufen sollen, erzeugen.
  61.  
  62.   2. Kompilieren Sie das Turbo Pascal-Programm CPASDEMO.PAS, und führen Sie
  63.      es aus.
  64.  
  65.   Dieses einfache Programm ruft jede im Turbo C-Modul definierte Funktion
  66.   auf. Jede der Turbo C-Funktionen ändert die aktuelle Bildschirmfarbe (durch
  67.   Aufruf der Turbo Pascal-Prozedur SetColor. }
  68. *)
  69.  
  70. uses Crt;
  71.  
  72. var
  73.   Factor : Word;
  74.  
  75. {$L CPASDEMO.OBJ}  { das Turbo C-.OBJ-Modul einbinden }
  76.  
  77. function Sqr(I : Integer) : Word; external;
  78. { Die Farbe des Textes ändern und das Quadrat von I zurückgeben }
  79.  
  80. function HiBits(W : Word) : Word; external;
  81. { Die Farbe des Textes ändern und das höchstwertige Byte von W zurückgeben }
  82.  
  83. function Suc(B : Byte) : Byte; external;
  84. { Die Farbe des Textes ändern und B + 1 zurückgeben }
  85.  
  86. function Upr(C : Char) : Char; external;
  87. { Die Farbe des Textes ändern und den Großbuchstaben von C zurückgeben }
  88.  
  89. function Prd(S : ShortInt) : ShortInt; external;
  90. { Die Farbe des Textes ändern und S - 1 zurückgeben }
  91.  
  92. function LoBits(L : LongInt) : LongInt; external;
  93. { Die Farbe des Textes ändern und die untere Hälfte von L zurückgeben }
  94.  
  95. procedure StrUpr(var S : string); external;
  96. { Die Farbe des Textes ändern und S in Großbuchstaben zurückgeben - die }
  97. { Turbo C-Routine muß dazu das Längenbyte des Strings überspringen. }
  98.  
  99. function BoolNot(B : Boolean) : Boolean; external;
  100. { Die Farbe des Textes ändern und NOT B zurückgeben }
  101.  
  102. function MultByFactor(W : Word) : Word; external;
  103. { Die Farbe des Textes ändern und W * Faktor zurückgeben - beachten Sie }
  104. { Turbo C's Zugriff auf Turbo Pascal's globale Variablen. }
  105.  
  106. procedure SetColor(NewColor : Byte); { Die Prozedur ändert die aktuellen    }
  107. begin                                { Anzeigefarben, indem die CRT-Variable}
  108.   TextAttr := NewColor;              { TextAttr geändert wird               }
  109. end; { SetColor }
  110.  
  111. var
  112.   S : string;
  113.  
  114. begin
  115.   Writeln(Sqr(10));                  { Alle definierten Funktionen aufrufen }
  116.   Writeln(HiBits(30000));            { und die passenden Infos übergeben    }
  117.   Writeln(Suc(200));
  118.   Writeln(Upr('x'));
  119.   Writeln(Prd(-100));
  120.   Writeln(LoBits(100000));
  121.   S := 'abcdefg';
  122.   StrUpr(S);
  123.   Writeln(S);
  124.   Writeln(BoolNot(False));
  125.   Factor := 100;
  126.   Writeln(MultbyFactor(10));
  127.   SetColor(LightGray);
  128. end.
  129.