home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------------------------- *)
- (* ERRORDEM.PAS *)
- (* Demonstration der Fehlerabfangung *)
-
- PROGRAM ErrorDemo;
-
- {$I ERROR.INC} (* Fehlerbehandlungs-Modul einbinden *)
-
- (* ------------------------------------------------------------------------- *)
- (* Fehlerbehandlung: Rumpf der FORWARD-deklarierten Prozedur in ERROR.INC *)
- (* Entsprechend eigenen Wuenschen zu gestalten! *)
-
- PROCEDURE Errorhandler;
-
- TYPE HexStrg = STRING[4];
-
- FUNCTION HexByte (b :BYTE) :HexStrg;
- CONST HexDigit :ARRAY [0..15] OF CHAR = '0123456789ABCDEF';
- BEGIN
- HexByte := HexDigit[b SHR 4] + HexDigit[b AND $0F]
- END;
-
-
- FUNCTION HexWord (w :INTEGER) :HexStrg;
- BEGIN
- HexWord := HexByte (w SHR 8) + HexByte (w AND $FF)
- END;
-
- BEGIN
- CASE ErrorType OF
- 0: Write ('Abbruch durch ^C');
- 1: Write ('I/O-Fehler ',HexByte(ErrorNr));
- 2: Write ('Laufzeit-Fehler ',HexByte(ErrorNr));
- END;
- WriteLn (' bei PC=',HexWord(ErrorPC));
- END;
-
- (* ------------------------------------------------------------------------- *)
- (* Hauptprogramm mit vorsaetzlich eingebauten Fehlern *)
-
- VAR i,k :INTEGER;
- y :REAL;
-
- BEGIN
- WriteLn;
- FOR i:=1 TO 2 DO
- BEGIN
- IF i=1 THEN
- InitErrorCheck (* erster Durchlauf: Fehler selbst behandeln *)
- ELSE
- OldErrorCheck; (* zweiter Durchlauf: bei Fehler abbrechen *)
- y := Sqr(1e20);
- y := 1/0;
- y := Sqrt(-1) + Ln(-1);
- k := Round(123456.0) + Trunc (98765.4);
- END
- END.
-