[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
UNITS02A.PAS
{ ---------------------------------------------------------------- }
{ 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 Lau
fwerk ',
'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 w
ird.';
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 }
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson