home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* XDRIVERS.PAS *)
- (* *)
- (* Systemfehler und erweiterte Statuszeilen *)
- (* (C) 1992 by Christian Ohr & DMV-Verlag *)
- (* ------------------------------------------------------ *)
- {$R-,S-,I-,B-,D-,L-,V-,A+,F+,O+,X+}
-
- UNIT XDrivers;
-
-
- INTERFACE
-
-
- USES Drivers, MsgBox, App;
-
-
- CONST
- hcRShift = $FFFC;
- hcLShift = $FFFD;
- hcCtrl = $FFFE;
- hcAlt = $FFFF;
-
-
- (* Systemfehler-Routine umschalten zwischen Typ 'MsgBox' *)
- (* (Enable = TRUE) oder Typ 'StatusLine' (Enable = FALSE).*)
-
- PROCEDURE SetSystemMsg (Enable: BOOLEAN);
-
-
- (* Setzt je nach gedrückter Sondertaste d. entsprechenden *)
- (* hc-Wert (s.o.). Dieser kann dann z.B. i.d. Statuszeile *)
- (* abgefragt werden. *)
-
- PROCEDURE SetStatusHelpCtx;
-
-
- IMPLEMENTATION
-
- CONST
- ErrCodeStr : ARRAY[0..15] OF STRING[40] =
- (#3'Disk in Laufwerk %c: ist schreibgeschützt',
- #3'Kritischer Disk-Fehler in %c:',
- #3'Disk in %c: ist nicht bereit',
- #3'Kritischer Disk-Fehler in %c:',
- #3'Integritätsfehler in %c:',
- #3'Kritischer Disk-Fehler in %c:',
- #3'Posititionierungsfehler in %c:',
- #3'Unbekannter Disktyp in %c:',
- #3'Sektor nicht gefunden in %c:',
- #3'Kein Papier im Drucker',
- #3'Schreibfehler in %c:',
- #3'Lesefehler in %c:',
- #3'Hardware-Schaden an Laufwerk %c:',
- #3'FAT ist fehlerhaft',
- #3'Adressierungsfehler',
- #3'Diskette in %c: einlegen');
-
- ToDoStr : STRING[40] =
- #13#10#13#10#3'Ok TO retry, Cancel TO abort.';
-
-
-
-
- (* Ausgabe des Systemfehlers in einer normalen MessageBox *)
-
- FUNCTION SystemErrorMsg (ErrorCode: INTEGER; Drive: BYTE)
- : INTEGER;
- VAR
- Params: LONGINT;
- BEGIN
- Params := Drive + 65;
- Params := MessageBox(ErrCodeStr[ErrorCode] + ToDoStr,
- @Params, mfError + mfOkButton + mfCancelButton);
- SystemErrorMsg := Params - 10;
- END;
-
-
- PROCEDURE SetSystemMsg (Enable: BOOLEAN);
- BEGIN
- IF Enable THEN
- SysErrorFunc := SystemErrorMsg ELSE
- SysErrorFunc := SystemError;
- END;
-
-
- PROCEDURE SetStatusHelpCtx;
- CONST
- RShift = 1;
- LShift = 2;
- Ctrl = 4;
- Alt = 8;
- VAR
- ShiftState : BYTE ABSOLUTE $40:$17;
- SaveCtx : WORD;
- BEGIN
- IF Application^.GetHelpCtx < $FFFC THEN
- SaveCtx := Application^.GetHelpCtx;
-
- IF ShiftState AND Alt <> 0 THEN BEGIN
- Application^.HelpCtx := hcAlt;
- Exit;
- END;
- IF ShiftState AND RShift = RShift THEN BEGIN
- Application^.HelpCtx := hcRShift;
- Exit;
- END;
- IF ShiftState AND LShift = LShift THEN BEGIN
- Application^.HelpCtx := hcLShift;
- Exit;
- END;
- IF ShiftState AND Ctrl = Ctrl THEN BEGIN
- Application^.HelpCtx := hcCtrl;
- Exit;
- END;
- Application^.HelpCtx := SaveCtx;
- END;
-
- END.
-
-
- (* ------------------------------------------------------ *)
- (* Ende von XDRIVERS.PAS *)
-