[<<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