home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* TOGHERC.PAS *)
- (* *)
- (* (c) 1988 by Dirk Bringmann und TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM TogHerc;
-
- {$M $4000,0,$4000} (* 16k Stack, 16k Heap *)
-
- USES Dos, Crt, Graph;
-
- VAR OldExitProc: Pointer;
-
- {$F+} (* far call erzwingen *)
- PROCEDURE MyExitProc;
- BEGIN
- ExitProc := OldExitProc;
- END;
- {$F-}
-
- CONST Weiter = ' // Weiter mit Taste // ';
-
- VAR Wert : ARRAY[0..1023] OF REAL;
- Graph_Wert : ARRAY[0..1023] OF REAL;
-
- PROCEDURE DB_Grafik;
-
- VAR GraphDriver: INTEGER; (* Nummer des Grafik-Treibers *)
- GraphMode : INTEGER; (* Grafik-Modus *)
- MaxX, MaxY : WORD; (* Bildschirm-Koordinaten *)
- ErrorCode : INTEGER; (* für Grafik-Fehlercodes *)
- OldExitProc: Pointer;
- MaxColor : WORD; (* Nummer der höchsten Farbe *)
-
- PROCEDURE Init_G;
- BEGIN
- GraphDriver := Detect;
- InitGraph(GraphDriver, GraphMode,'');
- ErrorCode := GraphResult;
- IF ErrorCode <> grOK THEN BEGIN
- WriteLn('Grafikfehler ', GraphErrorMsg(ErrorCode));
- Halt(1);
- END;
- MaxColor := GetMaxColor;
- MaxX := GetMaxX - 2;
- MaxY := GetMaxY;
- END;
-
- FUNCTION Int2Str(L: LONGINT): STRING;
- VAR s: STRING;
- BEGIN
- Str(L, s);
- Int2Str := s;
- END;
-
- PROCEDURE Rahmen;
- VAR ViewPort: ViewPortType;
- BEGIN
- SetColor(MaxColor);
- SetLineStyle(SolidLn, 0, NormWidth);
- GetViewSettings(ViewPort);
- WITH ViewPort DO
- Rectangle(0, 0, x2-x1, y2-y1);
- END;
-
- PROCEDURE Standard_Fenster(Ueberschrift: STRING);
- BEGIN
- SetColor(MaxColor);
- ClearDevice;
- SetTextStyle(DefaultFont, HorizDir, 1);
- SetTextJustify(CenterText, TopText);
- SetViewPort(0, 0, MaxX, MaxY, ClipON);
- OutTextXY(MaxX DIV 2, 2, Ueberschrift);
- SetViewPort(0, TextHeight('M')+4, MaxX,
- MaxY-(TextHeight('M')+4), ClipOn);
- Rahmen;
- SetViewPort(1, TextHeight('M')+5, MaxX-1,
- MaxY-(TextHeight('M')+5), ClipOn);
- END;
-
- PROCEDURE Warte_bis_Taste;
- VAR ch: CHAR;
- BEGIN
- REPEAT UNTIL KeyPressed;
- ch := ReadKey;
- END;
-
- PROCEDURE Fuss_Zeile(Msg: STRING);
- BEGIN
- SetViewPort(0, 0, MaxX, MaxY, ClipON);
- SetColor(MaxColor);
- SetTextStyle(DefaultFont, HorizDir, 1);
- SetTextJustify(CenterText, TopText);
- SetLineStyle(SolidLn, 0, NormWidth);
- SetFillStyle(EmptyFill, 0);
- Bar(0, MaxY-(TextHeight('M')+4), MaxX, MaxY);
- Rectangle(0, MaxY-(TextHeight('M')+4), MaxX, MaxY);
- OutTextXY(MaxX DIV 2, MaxY-(TextHeight('M')+2), Msg);
- SetViewPort(1, TextHeight('M')+5, MaxX-1,
- MaxY-(TextHeight('M')+5), ClipOn);
- Warte_bis_Taste;
- END;
-
- PROCEDURE Linie;
- VAR i: INTEGER;
- BEGIN
- SetTextStyle(DefaultFont, HorizDir, 3);
- SetTextJustify(leftText, TopText);
- FOR i := 1 TO 5 DO BEGIN
- OutTextXY( 40*i, 60*i, 'Hallo ');
- OutTextXY(200+40*i, 60*i, 'Hallo ');
- OutTextXY(400+40*i, 60*i, 'Hallo ');
- END;
- Delay(1000);
- ClearViewPort;
- SetColor(MaxColor);
- SetLineStyle(SolidLn, 0, NormWidth);
- Line(5, 5, MaxX-10, MaxY-30);
- Fuss_Zeile('Diagonale von links oben nach rechts unten '+
- Weiter);
- END;
-
- BEGIN
- Init_G;
- Standard_Fenster('...Das ist das Standard-Fenster...');
- Fuss_Zeile('Hier DB_Grafik -- vor dem Aufruf von LINIE '+
- Weiter);
- Linie;
- CloseGraph;
- Exec('C:\DOS\MODE.EXE', 'MONO');
- DirectVideo := FALSE;
- IF DosError <> 0 THEN
- WriteLn('-> S. 118/2 /// DOS-Error = ', DosError);
- Write('Hier ist wieder MODE MONO eingestellt ! ');
- ReadLn;
- ClrScr;
- END;
-
- BEGIN
- DirectVideo := FALSE;
- OldExitProc := ExitProc;
- ExitProc := @MyExitProc;
- ClrScr;
- DB_Grafik;
- WriteLn('Wieder im Hauptprogramm ');
- END.
-
- (* ------------------------------------------------------ *)
- (* Ende von TOGHERC.PAS *)