.\\\ WRITER 6 \\\ S:\APP\SW5\STARLAB.LAY R:\SW55N\TREIBER\PS.GPM 12 00000 00010 01394 00001 00001 00001 00002 00002 00000 00000 00000 00000 Markus Meyer Spezifikation Rsc-Compiler Fehlerbehandlung 0 16836 11338 0 0 JA 3 75 0 20 0 0 0 0 0 0 0 JA 9 20 4 Helvetica 14 Pt H1 97 20 0 Helvetica 12 Pt H2 65 23 0 Helvetia 10 Pt H3 65 20 0 Courier 10 Pt C1 1 23 0 Helvetica 14 Pt Fett F1 65 27 2 Helvetica 12 Pt Fett F2 65 23 2 Helvetia 10 Pt Fett F3 65 20 0 Tasten T1 129 27 0 Grundschrift GA 97 20 0 Grund - Absatzlayout V1.5-LSLP8 GA 0 0 0 0 9 97 20 0 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 Grundabsatzlayout-rechtsbndig GR 0 0 0 0 9 35 20 0 2 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 Listing LI 0 0 0 0 0 1 23 0 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 šberschrift U0 0 0 0 0 5 35 28 2 1 0 1 NEIN NEIN JA 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 šberschrift X. U1 0 0 0 0 5 35 28 2 1 0 1 NEIN NEIN JA 240 1 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 šberschrift X.X. U2 0 0 0 0 6 35 24 2 1 0 1 NEIN NEIN JA 240 2 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 šberschrift X.X.X. U3 0 0 0 0 6 35 20 2 1 0 1 NEIN NEIN JA 240 3 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 šberschrift X.X.X.X. U4 0 0 0 0 7 35 20 0 1 0 1 NEIN NEIN NEIN 240 4 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 šberschrift X.X.X.X.X. U5 0 0 0 0 7 35 20 0 1 0 1 NEIN NEIN NEIN 240 5 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 Einrckung 4 Sp / 4 Sp E1 576 576 0 0 9 35 20 0 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 Einrckung 8 Sp / 8 Sp E2 1150 1150 0 0 9 35 20 0 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 Einrckung 0 Sp / 4 Sp E3 0 564 0 0 9 35 20 0 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 Einrckung 4 Sp / 8 Sp E4 564 1150 0 0 9 35 20 0 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 Funktionsparameter FP 0 2891 0 0 9 35 20 0 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 Inhaltsverzeichnis IV 0 0 0 0 9 35 20 0 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 1 7653 0 0 Stichwortverzeichnis SV 0 0 0 0 9 35 20 0 1 141 1 JA NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 1 3744 1 0 Fettschrift einzeilig F1 0 0 0 0 7 65 20 2 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 576 0 0 1152 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 Punktliste PL 0 564 0 0 9 35 20 0 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 13 566 0 0 1133 0 0 1728 0 0 2304 0 0 2880 0 0 3456 0 0 4032 0 0 4608 0 0 5184 0 0 5760 0 0 6336 0 0 6912 0 0 7488 0 0 Fuázeile FZ 0 0 0 0 3 97 20 2 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 1 7200 1 0 Kopfzeile KZ 0 0 0 0 3 97 20 2 1 0 1 NEIN NEIN NEIN 240 0 0 16 0 0 0 0 0 0 0 NEIN 1 7920 1 0 Grund-Seitenlayout GS 566 609 2436 679 1416 1416 0 0 1 NEIN 0 0 AkzBf3#_PFAD##_TEXTNAME# 6-#_S#- Bf3ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  AfzBf3$Date: 22 Jan 1992 12:40:36 $ $Revision: 1.1 $  Stichwortverzeichnis SV 566 609 2437 680 1416 1416 566 0 2 NEIN 0 0 AliBf3Stichwortverzeichnis AliBf3ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄ  Ali6Bf3- #_S# -B00  GS - ohne Fuázeile KF 566 609 2437 680 1416 1416 0 0 1 NEIN 0 0 AliBf3#_KATEGORIE# / #_THEMA2# AliBf3ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  Ali  Inhaltsverzeichnis IV 566 609 2437 680 1416 1416 0 0 1 NEIN 0 0 AliBf3Inhaltsverzeichnis AliBf3ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄ  Ali  0 0 SkfAga Au0 #_KATEGORIE# Aga Au0 #_THEMA2# Aga Au0 Aga Au0 #_AUTOR# Aga Au0 STAR DIVISION / STAR LAB Hamburg Aga Au0 Stand: $Date: 22 Jan 1992 12:40:36 $ Aga Sgs SkfAgaPA Au0#_KATEGORIE# Aga AfpDokumentenname #_THEMA2# Aga AfpProjektname #_THEMA1# Aga AfpVersionsnummer $Revision: 1.1 $ Aga Afperstellt 16. September 1991 Aga Afpge„ndert $Date: 22 Jan 1992 12:40:36 $ Aga AfpDateiname #_PFAD##_TEXTNAME# Aga AfpAutor #_AUTOR# Aga AfpBearbeiter $Author: MM $ Aga AfpQualit„tskontrolle Aga AfpStatus XX in Arbeit Afp !__ fertiggestellt Afp !__ abgenommen Afp !__ freigegeben Aga AfpVertraulich __ Ja XX Nein Aga AfpCopyright (C) Star Division 1990 Aga Sgspa Au1#1 Einleitung Aga In diesem Dokument werden die Klassen beschrieben, die die Fehlerbehandlung organisieren. Hinweise zur Implementation Bevor eine dieser Klassen benutzt wird, muá die Funktion InitRscCompiler aufgerufen werden. AgaPA Au1#2 Klassenbeschreibung Aga AgaERRTYPE: Diese Klasse enth„lt eine Fehler- oder eine Warnungsnummer. RscError: Diese Klasse bernimmt die Ausgabe der Fehlermeldungen. Au1#3 Globale Funktionen Aga RscExit(): Die Funktion muá von jedem Programm implementiert werden, die Klassen aus dem rsc-System benutzen. Die Funktion bedeutet, daá das Programm sofort beendet werden muá, weil ein scherwiegender Programmfehler aufgetreten ist. SivPA Au0Inhaltsverzeichnis Aga Aiv1. Einleitung M3 2. Klassenbeschreibung D4 3. Globale Funktionen E4 ERRTYPE S6 RscError R10 ::RscExit() O15 Stichwortverzeichnis F17 Sgs Au0 Aga Au0PAERRTYPE Aga Aliclass ERRTYPE { public: ERRTYPE(); ERRTYPE( USHORT nErr ); ERRTYPE& operator = ( const ERRTYPE & rError ); operator USHORT(); BOOL IsError(); BOOL IsOk(); BOOL IsWarning(); void Clear(); }; #define ERR_OK #define ERR_ERROREND #define ERR_WARNING #define ERR_WARNINGEND Aga Af1Beschreibung Aga Eine Instanz dieser Klassen enth„lt entweder eine Fehler- oder eine Warnungsnummer oder keines von beiden. Zu beachten ist, daá eine Fehlernummer nicht berschrieben werden kann (!der erste Fehler ist interressant ). Af1Anmerkungen AgaWarnungen werden von Fehlernummern berschrieben, aber nicht von Warnungsnummern. Af1Querverweise Aga Klasse: RscError. Af1Beispiel Aga Ali..... ERRTYPE aError; aError = ERR_OPENFILE; aError = ERR_ERROR; if( ERR_OPENFILE == aError ) printf( "Fehler: Datei kann nicht g”ffnet werden!\n" ); else printf( "Fehler: Allgemeiner Fehler!\n"); ..... Aga AgaDie Ausgabe heiát: Fehler: Datei kann nicht ge”ffnet werden! Au0PAERRTYPE::ERRTYPE() Aga AliERRTYPE::ERRTYPE(); ERRTYPE::ERRTYPE( USHORT nErrNo ); ERRTYPE::ERRTYPE( const ERRTYPE & rError ); Aga Af1Beschreibung Aga Die wird eine Instanz ERRTYPE erzeugt. Af1Parameter Aga AfpnErrNo diese Zahl ist der Fehler der in die Instanz eingetragen wird. rError aus dieser Instanz wird der Fehler bernommen. Aga Af1Anmerkungen Aga Wird der leere Konstruktor verwendet, dann ist die Fehlernummer ERR_OK. Die Methode IsOk() liefert TRUE. Af1Querverweise Aga Klassen: RscError Methoden: IsError(), IsOk(), Clear(). Af1Beispiel AgaHier wird gezeigt wie Fehler zugewiesen und berschrieben werden. AliERRTYPE aErr; printf( aErr.IsOk() ? "TRUE", "FALSE" ); //Ausg.: TRUE aErr = WRN_LOCALID; //Warnung zuweisen printf( aErr.IsOk() ? "TRUE", "FALSE" ); //Ausg.: TRUE printf( aErr.IsWarning() ? "TRUE", "FALSE" );//Ausg.: TRUE printf( aErr.IsError() ? "TRUE", "FALSE" ); //Ausg.: FALSE aErr = ERR_ERROR; //Fehler zuweisen printf( aErr.IsOk() ? "TRUE", "FALSE" ); //Ausg.: FALSE printf( aErr.IsWarning() ? "TRUE", "FALSE" );//Ausg.: FALSE printf( aErr.IsError() ? "TRUE", "FALSE" ); //Ausg.: TRUE aErr = ERR_OK; //Fehler aufheben geht so nicht printf( aErr.IsOk() ? "TRUE", "FALSE" ); //Ausg.: FALSE printf( aErr.IsError() ? "TRUE", "FALSE" ); //Ausg.: TRUE aError.Clear(); //Fehler aufheben printf( aErr.IsOk() ? "TRUE", "FALSE" ); //Ausg.: TRUE printf( aErr.IsError() ? "TRUE", "FALSE" ); //Ausg.: FALSE Aga AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga Au0ERRTYPE::operator =() Aga AliERRTYPE & ERRTYPE::operator &( const ERRTYPE & rErr ); Aga Af1Beschreibung Aga Der Zuweisungsoperator kopiert den Fehler oder die Warnung von rErr in die Instanz. Ein kopieren findet nicht statt, wenn in der Instanz schon ein Fehler eingetragen wurde. Af1Parameter Aga AfprErr aus dieser Instanz wird der Fehler bernommen. Aga Af1Return-Werte Aga Die eigene Instanz wird zurckgeliefert. Af1Querverweise Aga Methoden: operator USHORT(). Af1Beispiel Aga AliERRTYPE aError( ERR_RSCRANGE ); printf( ERR_RSCRANGE == aError ? "TRUE" : "FALSE" ); //Ausgabe: TRUE //Versuch den Fehler zu ueberschreiben (geht nicht) aError = ERRTYPE( ERR_ERROR ); printf( ERR_ERROR == aError ? "TRUE" : "FALSE" ); //Ausgabe: FALSE aError.Clear(); aError = ERRTYPE( ERR_ERROR ); printf( ERR_ERROR == aError ? "TRUE" : "FALSE" ); //Ausgabe: TRUE Aga AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga Au0ERRTYPE::operator USHORT() Aga AliERRTYPE::operator USHORT(); Aga Af1Return-Werte Aga Die Fehlernummer in der Instanz wird zurckgeliefert. Af1Querverweise Aga Methoden: operator =(). AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga Au0ERRTYPE::IsError() Aga AliBOOL ERRTYPE::IsError(); Aga Af1Beschreibung Aga Diese Methode zeigt an ob in der Instanz eine Fehlernummer steht, die einen Fehler anzeigt. Af1Return-Werte Aga AfpTRUE wenn die Fehlernummer im Bereich [0, ERR_ERROREND] liegt. FALSE wenn die Fehlernummer im Bereich ]ERR_ERROREND, 0xFFFF "] liegt. Aga Af1Querverweise Aga Methoden: IsOk(), IsWarning(), Clear(). Aga AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga Au0ERRTYPE::IsOk() Aga AliBOOL ERRTYPE::IsOk(); Aga Af1Beschreibung Aga Diese Methode zeigt an ob in der Instanz eine Fehlernummer steht, die keinen Fehler anzeigt. Af1Return-Werte Afp TRUE wenn die Fehlernummer im Bereich ]ERR_ERROREND, "0xFFFF] liegt. FALSE wenn die Fehlernummer im Bereich [0, ERR_ERROREND] liegt. Aga Af1Querverweise Aga Methoden: IsError(), IsWarning(), Clear(). Aga AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga Au0ERRTYPE::IsWarning() Aga AliBOOL ERRTYPE::IsWarning(); Aga Af1Beschreibung Aga Diese Methode zeigt an ob in der Instanz eine Fehlernummer steht, die einen Warnung anzeigt. Af1Return-Werte Afp TRUE wenn die Fehlernummer im Bereich [ERR_WARNING, "ERR_WARNINGEND] liegt. FALSE wenn die Fehlernummer in einem anderen Bereich liegt. Aga Af1Querverweise Aga Methoden: IsOk(), IsError(), Clear(). Aga AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Au0ERRTYPE::Clear() Aga Alivoid ERRTYPE::Clear(); Aga Af1Beschreibung Aga Die Fehlernummer wird auf ERR_OK gesetzt. Das heiát die Methode IsOk() liefert TRUE zurck. Aga AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Au0PARscError Aga Ali#define ERR_ERROR 0x0100 #define ERR_UNKNOWN_METHOD 0x0101 #define ERR_OPENFILE 0x0102 #define ERR_NOCHAR 0x0103 #define ERR_NORSCINST 0x0104 #define ERR_USAGE 0x0105 #define ERR_NOINPUT 0x0106 #define ERR_UNKNOWNSW 0x0107 #define ERR_REFTODEEP 0x0108 #define ERR_RSCRANGE 0x0200 #define ERR_RSCRANGE_OUTDEFSET (ERR_RSCRANGE +1 ) #define ERR_RSCENUM 0x0210 #define ERR_RSCFLAG 0x0220 #define ERR_RSCCONT 0x0240 #define ERR_CONT_INVALIDPOS (ERR_RSCCONT +1 ) #define ERR_CONT_INVALIDTYPE (ERR_RSCCONT +2 ) #define ERR_RSCCMPED 0x0250 #define ERR_RSCINST 0x0260 #define ERR_RSCINST_NOVARNAME (ERR_RSCINST +1 ) #define ERR_RSCINST_RESERVEDNAME (ERR_RSCINST +2 ) #define ERR_LEX 0x0270 #define ERR_YACC 0x0280 #define ERR_DOUBLEID (ERR_YACC +1 ) #define ERR_FALSETYPE (ERR_YACC +2 ) #define ERR_NOVARIABLENAME (ERR_YACC +3 ) #define ERR_USHORTRANGE (ERR_YACC +4 ) #define ERR_IDRANGE (ERR_YACC +5 ) #define ERR_NOCOPYOBJ (ERR_YACC +6 ) #define ERR_REFNOTALLOWED (ERR_YACC +7 ) #define ERR_DOUBLEDEFINE (ERR_YACC +8 ) #define ERR_COPYNOTALLOWED (ERR_YACC +9 ) #define ERR_IDEXPECTED (ERR_YACC +10) #define ERR_ZERODIVISION (ERR_YACC +11) #define ERR_PRAGMA (ERR_YACC +12) #define ERR_DECLAREDEFINE (ERR_YACC +13) #define WRN_LOCALID (ERR_WARNING +1 ) #define WRN_GLOBALID (ERR_WARNING +2 ) #define WRN_SUBINMEMBER (ERR_WARNING +3 ) #define WRN_CONT_NOID (ERR_WARNING +4 ) #define WRN_STR_REFNOTFOUND (ERR_WARNING +5 ) #define WRN_MGR_REFNOTFOUND (ERR_WARNING +6 ) #define WRN_CONT_DOUBLEID (ERR_WARNING +7 ) class RscError{ public: USHORT nErrors;// Anzahl der Fehler RscError(); void SetListFile( FILE * fList ); virtual void StdOut( const char * ); virtual void LstOut( const char * ); virtual void Error( ERRTYPE nError, RscTop* pClass, const RscId &aId, const char * pMessage = NULL ); virtual void FatalError( ERRTYPE nError, const RscId &aId, const char * pMessage = NULL ); }; Aga Af1Beschreibung Aga In dieser Klasse werden Fehlermeldungen ausgegeben. Die Fehlermeldungen werden zur Standartausgabe geschickt und in eine Listing-Datei geschrieben. Nach Aufruf der Methode FatalError() wird die Funktion RscExit() aufgerufen. Diese sollte das Programm terminieren. Die Ausgabe der Fehler hat folgendes Format: 1. Zeile in der der Fehler aufgetreten ist. 2. Position an der der Fehler aufgetreten ist. 3. Fehlernummer: Error ( Typ, Identifier ): Fehlermeldung. Af1Ausnahmen Aga Die Ausgabe wird unter MS-Windows nicht nach "stdout" umgeleitet, sondern sie wird unterdrckt. Af1Anmerkungen Aga Die Klasse tauscht Zeilennummern, Zeilen usw. ber globale Variable mit dem Parser aus. Aus diesem Grund darf der Parser nicht rekursiv aufgerufen werden. Wenn ein Fehler am Ende einer Zeile bemerkt wird, wird h„ufig die Zeile nach der Fehlerhaften angezeigt. Af1Querverweise Aga Klassen: RscTypCont, ERRTYPE, RscId, RscFileInst, alle Rsc... Klassen. Funktionen: ::RscExit(), ::parser(), ::MacroParser(), ::IncludeParser(). Af1Beispiel AgaImplementation der Standartausgabe unter MS-Windows. Ali..... class WinError :: public RscError{ ListBox * pOutput; public: WinError( ListBox * pListBox ) : RscError(){  pOutput = pListBox; } void StdOut( const char * pStr ){  //fuer gute Ausgabeformatierung muesste auf RETURN  //geachtet werden  pOutput.Insert( pStr, LISTBOX_APPEND ); } }; ..... AgapaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Au0Fehlernummern Aga AfpERR_ERROR Allgemeiner Fehler, dieser Fehler kann nicht nicht genauer "spezifiziert werden. ERR_UNKNOWN_METHOD Eine virtuelle Methode die in der abgeleiteten Klasse nicht "implementiert ist. Siehe Methoden der Klasse RscInst: SetString(), "SetNumber .... Man kann die Fehlermeldung als Typfehler "betrachten, das heiát dieser Typ darf nicht verwendet werden. ERR_OPENFILE Die Datei mit dem angegebenen Namen konnte nicht ge”ffnet "werden. ERR_NOCHAR Es konnte kein Zeichen generiert werden. Zum Beispiel kann "'\333' nicht in ein Zeichen umgewandelt werden. ERR_NORSCINST Interner Fehler, eine Methode soll auf eine ungltige Instanz "angewendet werden. ERR_NOINPUT Es wurde keine Eingabedatei angegeben. ERR_USAGE Es wird eine Kommandozeilenhilfe ausgegeben (rsc -h). ERR_UNKNOWNSW In der Kommandozeile wurde ein unbekannter Schalter "verwendet. ERR_REFTODEEP Referenzen werden nur bis zu einer bestimmten Tiefe aufgel”st. "Der Fehler bedeutet, das Referenzen rekursiv definiert wurden "oder daá sie zu tief verschachtelt sind. ERR_RSCRANGE In der Klasse RscRange ist ein Fehler aufgetreten. ERR_RSCRANGE_OUTDEFSET  In eine RscRange-Instanz wurde versucht eine Zahl einzusetzen, "die auáerhalb des Wertebereichs liegt. ERR_RSCENUM In der Klasse RscEnum ist ein Fehler aufgetreten. ERR_RSCFLAG In der Klasse RscFlag ist ein Fehler aufgetreten. ERR_RSCCONT In der Klasse RscCont ist ein Fehler aufgetreten. ERR_CONT_INVALIDPOS In einer RscCont-Instanz wurde auf eine Position zugegriffen, auf "der sich keine Instanz befunden hat. ERR_CONT_INVALIDTYPE  In einer RscCont-Instanz wurde versucht eine Instanz mit "falschem Typ einzusetzen. ERR_RSCINST In der Klasse RscInst ist ein Fehler aufgetreten. ERR_RSCINST_NOVARNAME  Eine Methode der Klasse RscInst die einen Variablennamen als "Parameter ben”tigt stellt fest, das dieser Name in der "entsprechenden Instanz nicht als Variable definiert ist. Vermutlich "hat die RscInst-Instanz einen anderen Typ als erwartet. ERR_RSCINST_RESERVEDNAME Fr ein Makro soll eine Name verwendet werden, der "schon belegt ist. Namen k”nnen zum Beispiel schon fr Variablen "vergeben sein. Aga Es folgen Fehler die beim Parsen auftreten k”nnen. AfpERR_YACC Allgemeiner Fehler der beim Parsen aufgetreten ist. ERR_DOUBLEID Zwei globale Resourcen haben den gleichen Identifier. ERR_FALSETYPE Der verwendete Typ ist nicht erlaubt. ERR_NOVARIABLENAME Die Variable darf hier nicht verwendet werden. ERR_USHORTRANGE Der Zahlenwert ist auáerhalb von [0, 0xFFFF]. ERR_IDRANGE Der Zahlenwert ist auáerhalb von [0, 0x7FFF]. ERR_NOCOPYOBJ Defaultresource wurde nicht gefunden. Eine Resourceinstanz kann "mit einer anderen initialisiert werden. Diese ander Instanz wurde "nicht gefunden. ERR_REFNOTALLOWED An dieser Stelle ist die Angabe einer Referenz verboten. ERR_DOUBLEDEFINE Ein Makroname soll doppelt vergeben werden. ERR_COPYNOTALLOWED Die Angabe einer Defaultresource ist verboten. ERR_IDEXPECTED Ein Identifier muá Angegeben werden. ERR_ZERODIVISION Es sollte durch Null geteilt werden. ERR_PRAGMA Bei der Angabe eines Pragmas ist ein Fehler aufgetreten. ERR_DECLAREDEFINE Ein Makro mit dieser Deklaration kann nicht erstellt werden. "Entweder eine rekursive Definition oder die verwendeten Makros "sind nicht in der Abh„ngigkeitsliste. Aga Es folgen Warnungen. AfpWRN_LOCALID Resourcen die sich innerhalb einer anderen Resource befinden "(Unterresourcen) haben ein Identifier ber 255. WRN_GLOBALID Globale Resourcen haben einen Identifier unter 256. WRN_SUBINMEMBER Die Unterresource werden nicht beachtet. Das bedeutet, daá auf "diese Resourcen zur Laufzeit nicht zugegriffen werden kann. WRN_CONT_NOID Die Resourcen haben einen ungltigen Identifier. Auf diese "Resourcen kann zur Laufzeit nicht zugegriffen werden. WRN_STR_REFNOTFOUND Beim schreiben ein rc-Datei konnte eine Stringreferenz nicht "aufgel”st werden. WRN_MGR_REFNOTFOUND Beim schreiben ein rc-Datei konnte eine Referenz nicht aufgel”st "werden. Wenn auf Unterresourcen zugegriffen wird, die sich in "der referenzierten Resource befinden, dann kann ein "Laufzeitfehler auftreten. WRN_CONT_DOUBLEID Zwei Unterresource haben den gleichen Identifier. Aga ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Au0RscError::RscError() Aga AliRscError::RscError(); Aga Af1Beschreibung Aga Eine Instanz wird erzeugt. Der Fehlerz„hler wird auf Null gesetzt. AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga Au0RscError::SetListFile() Aga Alivoid RscError::SetListFile( FILE * fLstFile ); Aga Af1Beschreibung Aga Es wird eine Datei angegeben in die das Listing und die Fehlermeldungen geschrieben werden. fListing darf auch NULL sein, dann wird kein Listing erzeugt. Af1Parameter Aga AfpfLstFile Dies ist die Datei in die geschrieben wird. Aga Af1Anmerkung Aga Fr das ™ffnen und Schlieáen ist der Aufrufer verantwortlich. AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga Au0RscError::StdOut() Aga Alivirtual void RscError::StdOut( const char * pStr ); Aga Af1Beschreibung Aga Alle Zeichenketten werden nach stdout geschrieben. Af1Parameter Aga AfppStr Dies ist die Zeichenkette die geschrieben wird. Aga Af1Ausnahmen Aga Unter MS-Windows wird nicht nach stdout ausgegeben. Aga AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga Au0RscError::StdLst() Aga Alivirtual void RscError::StdLst( const char * pStr ); Aga Af1Beschreibung Aga Alle Zeichenketten werden in die Listing-Datei geschrieben. Af1Parameter Aga AfppStr Dies ist die Zeichenkette die geschrieben wird. Aga Af1Ausnahmen Aga Wenn keine Listing-Datei angegeben ist passiert nichts. Aga Querverweise Methoden: SetListFile(). AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Au0RscError::Error() Aga Alivirtual void RscError::Error( ERRTYPE aError, RscTop * pClass, const RscId & rId, const char * pMess = NULL ); Aga Af1Beschreibung Aga Mit dieser Methode werden Fehler- und Warnungsmeldungen ausgegeben. Die Methode benutzt die Methoden StdOut() und LstOut(). Wenn eine Fehlermeldung vorliegt wird der Fehlerz„hler um eins erh”ht. Af1Parameter Aga AfpaError Hierin ist die Fehlernummer gespeichert. šber diese wird der "Fehlertext ermittelt. pClass Dies ist der Typ der Resourceinstanz, in der der Fehler aufgetreten "ist. pClass darf NULL sein. rId Dies ist der Identifier der Resourceinstanz, in der der Fehler "aufgetreten ist. pMess Dies ist der Fehlertext. pMess darf NULL sein. Aga AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga Au0RscError::FatalError() Aga Alivirtual void RscError::FatalError( ERRTYPE aError, const RscId & rId, const char * pMess = NULL ); Aga Af1Beschreibung Aga Mit dieser Methode werden schwerwiegende Fehler angezeigt. Die Methode benutzt die Methoden StdOut() und LstOut(). Die Funktion RscExit( 1 ) wird gerufen, diese sollte das Programm beenden. Af1Parameter Aga AfpaError Hierin ist die Fehlernummer gespeichert. šber diese wird der "Fehlertext ermittelt. rId Dies ist der Identifier der Resourceinstanz, in der der Fehler "aufgetreten ist. pMess Dies ist der Fehlertext. pMess darf NULL sein. Aga AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga Au0::RscExit() Aga Alivoid RscExit( USHORT nExit ); Aga Af1Beschreibung Aga Diese Methode wird gerufen wenn ein schwerwiegende Fehler aufgetreten ist. Das Programm muá beendet werden. Fehlernummer: Afp1  Die Funktion FatalError() wurde aufgerufen. 10 Mit den c-Funktionen alloc() oder realloc() wird kein Speicher "mehr zur Verfgung gestellt. 11 Hashtabelle l„uft ber. 12 Es wird mehr als 64k -1 Byte Speicher angefordert. 13 In einem internen Zeichenkettenfeld ist nicht genug Platz. 14 Es wird ein Objekt gel”scht auf das noch mindestens eine "Referenz besteht. 16 Maximal 32 Variablen pro Klasse erlaubt. Aga Af1Parameter Aga AfpnExit Mit Hilfe dieser Zahl wird der aufgetreten Fehler etwas genauer "beschrieben. Aga Af1Beispiel Aga Alivoid RscExit( USHORT nExit ){ if( nExit )  printf( "Program exit ist %d\n" nExit ); exit( nExit ); }; Aga AgaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Aga SsvAgaPA Au0Stichwortverzeichnis Aga Asv::RscExit() 15 ERRTYPE::Clear() 9 ERRTYPE::ERRTYPE() 7 ERRTYPE::IsError() 8 ERRTYPE::IsOk() 9 ERRTYPE::IsWarning() 9 ERRTYPE::operator =() 7 ERRTYPE::operator USHORT() 8 ERRTYPE #6 Fehlernummern 12 RscError !10 RscError::Error() 14 RscError::FatalError() 15 RscError::RscError() 13 RscError::SetListFile() 13 RscError::StdLst() 14 RscError::StdOut() 13 Aga