home *** CD-ROM | disk | FTP | other *** search
- { ──────────────────────────────────────────────────────────────── }
- { DEMO-MODUL DEFINITION ERROR-HANDLER }
- { ──────────────────────────────────────────────────────────────── }
- { Die folgenden Kommentare sind falsch. Dieser Satz ist falsch. }
- { Was ist richtig ? }
- { (Zitat D.R. Hoftadter - "Gödel, Escher, Bach - Ein endlos ge- }
- { flochtenes Band" Ende) }
- { ──────────────────────────────────────────────────────────────── }
- { Hat die Aufgabe, den Benutzer auf Fehler bei der Programmaus- }
- { führung oder bei der Eingabe aufmerksam zu machen; bei }
- { kritischen Fehlern besteht die Möglichkeit, das Programm zu }
- { beenden. }
- { Ebenso werden die Fehler, die die Turbo-Vision über "System- }
- { Error" (leider auf Englisch) behandeln läßt, abgefangen und }
- { einer vernünftigen Behandlung zugeführt, wobei die Sprache über }
- { ein Flag zwischen Deutsch und englisch "umschaltbar" ist. }
- { ──────────────────────────────────────────────────────────────── }
- { Ach, noch etwas: die ganze Geschichte funktioniert natürlich nur }
- { in (echten) Turbo-Vision-Applikationen ... Um in einer "normalen"}
- { DOS-Applikation lauffähig zu sein, reicht es allerdings, das }
- { Vision-Flag zu löschen (siehe "UNITS02"). }
- { Und es sollte auch niemand auf die Idee kommen, die Unit NEAR }
- { zu kompilieren - ohne FAR läuft gar nichts (ich liebe Sprünge }
- { ins Nirwana ...). }
- { ──────────────────────────────────────────────────────────────── }
- { (c) Aurora featuring Markus SCHWAIGER in 1992 }
- { ──────────────────────────────────────────────────────────────── }
- { History: }
- { Datum / Bearb. / Art }
- { 27. 3.1992 MS Beginn Implementation. }
- { 29. 4.1992 MS Gegen 3 Uhr morgens schöne Grüsse an }
- { meinen Star-Programmierer / Windows - }
- { Vorhang auf für WG ! (Ich hoffe, ich über-}
- { lebe diese Unit, ohne von meiner Freundin }
- { erwüüüüüü... }
- { ──────────────────────────────────────────────────────────────── }
-
- {$F+}
-
- UNIT Units02a;
-
- INTERFACE
-
- {$DEFINE German} { Für englische Ausgabe: $UNDEF }
-
- USES
- {$IFNDEF Windows}
- {$IFDEF Vision}
- DRIVERS,
- DIALOGS,
- VIEWS,
- {$IFDEF German} { Eigentlich wollte ich nur die Möglich- }
- AMsgBox, { keit der Verschachtelung beweisen }
- {$ELSE}
- MsgBox,
- {$ENDIF}
- {$ENDIF}
- {$ENDIF}
- Error;
-
-
- CONST
- German = 1;
- English = 2;
-
- {$IFDEF German}
- Language : BYTE = German;
- {$ELSE}
- Language : BYTE = English;
- {$ENDIF}
-
-
- { ──────────────────────────────────────────────────────────────── }
- { Installiert die beiden neuen Fehler-Handler. Darf erst nach der }
- { Initialisierung der Application aufgerufen werden ! }
- { ──────────────────────────────────────────────────────────────── }
-
- PROCEDURE InstallHandlers;
-
-
- { ──────────────────────────────────────────────────────────────── }
- { Übernimmt die Funktion der Turbo-Vision-Prozedur "SystemError" }
- { zur Behandlung von kritischen (das System in seiner Funktions- }
- { weise behindernden) Fehlern. }
- { Gibt die Fehlermeldung in einer MessageBox am Bildschirm aus und }
- { läßt den Benutzer wählen, ob der Versuch wiederholt oder abge- }
- { brochen werden soll. }
- { ──────────────────────────────────────────────────────────────── }
-
- {$IFNDEF Windows}
- {$IFDEF Vision}
-
- FUNCTION CriticalError (Code : INTEGER; Drive : BYTE) : INTEGER;
-
- {$ENDIF}
- {$ENDIF}
-
-
- { ──────────────────────────────────────────────────────────────── }
- { Fehlerhandler für die Unit Error. }
- { Gibt die Fehlermeldung in einer MessageBox am Bildschirm aus. }
- { ──────────────────────────────────────────────────────────────── }
-
- PROCEDURE NonCriticalError (Code : INTEGER; Msg : STRING);
-
-
- IMPLEMENTATION
-
- { ──────────────────────────────────────────────────────────────── }
- { Klartext der möglichen kritischen Fehler in englischer Sprache. }
- { ──────────────────────────────────────────────────────────────── }
-
- {$IFNDEF Windows}
- {$IFDEF Vision}
-
- CONST
- ESysErrArr : ARRAY [0 .. 15] OF STRING = (
- 'Disk is write-protected in drive ',
- 'Critical disk error on drive ', { 1 }
- 'Disk is not ready in drive ',
- 'Critical disk error on drive ',
- 'Data integrity error on drive ',
- 'Critical disk error on drive ', { 5 }
- 'Seek error on drive ',
- 'Unknown media type in drive ',
- 'Sector not found on drive ',
- 'Printer out of paper',
- 'Write fault on drive ', { 10 }
- 'Read fault on drive ',
- 'Hardware failure on drive ',
- 'Bad memory image of FAT detected',
- 'Device access error',
- 'Insert diskette in drive ' { 15 }
- );
-
-
- { ──────────────────────────────────────────────────────────────── }
- { Klartext der möglichen kritischen Fehler in deutscher Sprache. }
- { ──────────────────────────────────────────────────────────────── }
-
- CONST
- DSysErrArr : ARRAY [0 .. 15] OF STRING = (
- 'Diskette ist schreibgeschützt in Laufwerk ',
- 'Kritischer Fehler auf Laufwerk ', { 1 }
- 'Laufwerk ist nicht bereit - bitte Medium einlegen in Laufwerk ',
- 'Kritischer Fehler auf Laufwerk ',
- 'Datenintegrität nicht mehr gegeben in Laufwerk ',
- 'Kritischer Fehler auf Laufwerk ',
- 'Zugriffsfehler in Laufwerk ', { 5 }
- 'Unbekanntes Format Medium in Laufwerk ',
- 'Sektor nicht gefunden auf Laufwerk ',
- 'Kein Papier im Drucker - bitte Papierbehälter füllen',
- 'Schreibfehler - bitte Schreibschutz entfernen von Laufwerk ',
- { 10 }
- 'Lesefehler - eventuell nicht oder ungültig formatiertes Medium in Laufwerk ',
- 'Hardware-Fehler auf Laufwerk ',
- 'Fehlerhafte FAT auf Laufwerk ',
- 'Zugriffsfehler Laufwerk ',
- 'Bitte Diskette / Medium einlegen in Laufwerk ' { 15 }
- );
-
- {$ENDIF}
- {$ENDIF}
-
- { ──────────────────────────────────────────────────────────────── }
- { Konvertiert eine LongInt-Zahl ohne jede Formatierung in einen }
- { String. }
- { ──────────────────────────────────────────────────────────────── }
-
- FUNCTION L2S (Long : LONGINT) : STRING;
-
- VAR
- S : STRING;
-
- BEGIN
- STR (Long, S);
-
- L2S := S;
- END; { FUNCTION L2S }
-
-
- { ──────────────────────────────────────────────────────────────── }
- { Übernimmt die Funktion der Turbo-Vision-Prozedur "SystemError" }
- { zur Behandlung von kritischen (das System in seiner Funktions- }
- { weise behindernden) Fehlern. }
- { Gibt die Fehlermeldung in einer MessageBox am Bildschirm aus und }
- { läßt den Benutzer wählen, ob der Versuch wiederholt oder abge- }
- { brochen werden soll. }
- { ──────────────────────────────────────────────────────────────── }
-
- {$IFNDEF Windows}
- {$IFDEF Vision}
-
- FUNCTION CriticalError (Code : INTEGER; Drive : BYTE) : INTEGER;
-
- VAR
- Str : STRING;
- Result : WORD;
-
- BEGIN
- CASE Language OF
- English :
- BEGIN
- Str := 'Error 01-' + L2S (Code) + ':' + #13#13;
-
- Str := Str + ^C + ESysErrArr [Code];
- END; { English : }
- German :
- BEGIN
- Str := 'Fehler 01-' + L2S (Code) + ':' + #13#13;
-
- Str := Str + ^C + DSysErrArr [Code];
- END; { German : }
- END; { CASE Language OF }
-
- Str := Str + #13#10#13#10;
-
- Result := MessageBox (Str, Nil, mfError + mfOKCancel);
-
- IF Result = cmOK THEN
- CriticalError := 0
- ELSE
- CriticalError := 1;
- END; { FUNCTION CriticalError }
-
- {$ENDIF}
- {$ENDIF}
-
- { ──────────────────────────────────────────────────────────────── }
- { Fehlerhandler für die Unit Error. }
- { Gibt die Fehlermeldung in einer MessageBox am Bildschirm aus. }
- { ──────────────────────────────────────────────────────────────── }
-
- PROCEDURE NonCriticalError (Code : INTEGER; Msg : STRING);
-
- VAR
- Str : STRING;
-
- BEGIN
- CASE Code OF
- 0 : { Everything's OK - dürfte eigentlich nie "kommen" }
- ;
- 6, 8, 9, 11, 14 :
- BEGIN
- Str := 'Kritischer Fehler 02-' + L2S (Code) + ':' + #13#10;
- Str := Str + ^C + Msg + #13#10;
- Str := Str + 'Es ist möglich, daß der Programmablauf behindert wird.';
- Str := Str + #13#10#13#10;
-
- {$IFDEF Windows}
- WRITELN (Str);
- {$ELSE}
- {$IFDEF Vision}
- MessageBox (Str, Nil, mfError + mfOKCancel);
- {$ELSE}
- WRITELN (Str);
- {$ENDIF}
- {$ENDIF}
- END;
- ELSE
- BEGIN
- Str := 'Fehler 03-' + L2S (Code) + ':' + #13#10;
- Str := Str + ^C + Msg;
- Str := Str + #13#10#13#10;
-
- {$IFDEF Windows}
- WRITELN (Str);
- {$ELSE}
- {$IFDEF Vision}
- MessageBox (Str, Nil, mfError + mfOKButton);
- {$ELSE}
- WRITELN (Str);
- {$ENDIF}
- {$ENDIF}
- END;
- END; { CASE Code OF }
- END; { PROCEDURE NonCriticalError }
-
-
- { ──────────────────────────────────────────────────────────────── }
- { Installiert die beiden neuen Fehler-Handler. Darf erst nach der }
- { Initialisierung der Application aufgerufen werden ! }
- { ──────────────────────────────────────────────────────────────── }
-
- PROCEDURE InstallHandlers;
-
- BEGIN
- Error.SetErrHandler (NonCriticalError);
-
- {$IFNDEF Windows}
- {$IFDEF Vision}
- DRIVERS.SYSERRORFUNC := CriticalError;
- {$ENDIF}
- {$ENDIF}
- END; { PROCEDURE InstallHandlers }
-
- END. { UNIT Units02a }
-