home *** CD-ROM | disk | FTP | other *** search
- {
- I am looking For something like in BASIC where you could ON ERRO GOSUB
- and anytime there was an error the Program re-routed..
-
- It Sounds like you're after two things; a method of checking your Printer
- and a means of trapping runtime errors.
- }
- Function PrinterReport:Byte;
- { This Function requires the Dos Unit. Returned values mean the following -
- 0 = Printer is okay
- 1 = Printer is out of paper
- 2 = Printer is offline
- 3 = Printer is busy
- 4 = God knows what's wrong With the Printer but I'd get an engineer out.}
- Var
- Regs : Registers;
- begin
- With Regs do
- begin
- Ah := 2;
- Dx := LPTport;
- intr($17,Regs);
- if (Ah and $B8) = $90 then PrinterReport := 0
- else if (Ah and $20) = $20 then PrinterReport := 1
- else if (Ah and $10) = $00 then PrinterReport := 2
- else if (Ah and $80) = $00 then PrinterReport := 3
- else if (Ah and $08) = $08 then PrinterReport := 4;
- end;
- end; { of Function }
-
- {
- As For trapping runtime errors, all you have to do is replace the
- standard Exit Procedure With your own. For example...
- }
-
- Program JohnMajorGoosedTheCook;
- Var
- SavedExitPoint : Pointer; { This holds the old Exit proc value }
- Number : Integer;
-
- {$F+}
- Procedure MyExitProc;
- {$F-}
- begin
- if errorAddr <> NIL then { if you got a runtime error... }
- begin
- Writeln ('The Programmer got it wrong again. There has been an');
- Writeln ('error at ',seg(errorAddr^), ':', ofs(errorAddr^));
- Writeln ('with an Exit code of ',exitCode);
- Writeln ('Please call him on 123-4567 and give him dogs abuse.');
- errorAddr := NIL; { which cancels the runtime error address...}
- ExitCode := 0; { which cancels the runtime error code }
- end;
- Exitproc := SavedExitPoint; { restore the old Exit Procedure...}
- end; { of Procedure }
-
- begin
- SavedExitPoint := ExitProc; { Save the old Exit Procedure... }
- ExitProc := @MyExitProc; { ...and replace it With your own }
- Number := 0; { Uh oh... }
- Writeln (4 div Number); { Oh dear...}
- end. { of PROGRAM }