xref: /trunk/main/rsc/doku/feinkonz.43/rscerror.doc (revision cdf0e10c)
1.\\\ WRITER 6 \\\
2S:\APP\SW5\STARLAB.LAY
3R:\SW55N\TREIBER\PS.GPM
412
500000
600010
701394
800001
900001
1000001
1100002
1200002
1300000
1400000
1500000
1600000
17Markus Meyer
18Spezifikation
19Rsc-Compiler
20Fehlerbehandlung
21
22
23
24
25
26
270
2816836
2911338
300
310
32JA
333
3475
350
3620
370
380
390
400
410
420
430
44JA
45
46
47
489
4920
504
51Helvetica 14 Pt
52H1
5397
5420
550
56
57Helvetica 12 Pt
58H2
5965
6023
610
62
63Helvetia 10 Pt
64H3
6565
6620
670
68
69Courier 10 Pt
70C1
711
7223
730
74
75Helvetica 14 Pt Fett
76F1
7765
7827
792
80
81Helvetica 12 Pt Fett
82F2
8365
8423
852
86
87Helvetia 10 Pt Fett
88F3
8965
9020
910
92
93Tasten
94T1
95129
9627
970
98
99Grundschrift
100GA
10197
10220
1030
104
105Grund - Absatzlayout V1.5-LSLP8
106GA
1070
1080
1090
1100
1119
11297
11320
1140
1151
1160
1171
118NEIN
119NEIN
120NEIN
121240
1220
1230
12416
1250
1260
1270
1280
1290
1300
1310
132NEIN
133
13413
135576
1360
1370
1381152
1390
1400
1411728
1420
1430
1442304
1450
1460
1472880
1480
1490
1503456
1510
1520
1534032
1540
1550
1564608
1570
1580
1595184
1600
1610
1625760
1630
1640
1656336
1660
1670
1686912
1690
1700
1717488
1720
1730
174Grundabsatzlayout-rechtsb�ndig
175GR
1760
1770
1780
1790
1809
18135
18220
1830
1842
1850
1861
187NEIN
188NEIN
189NEIN
190240
1910
1920
19316
1940
1950
1960
1970
1980
1990
2000
201NEIN
202
20313
204576
2050
2060
2071152
2080
2090
2101728
2110
2120
2132304
2140
2150
2162880
2170
2180
2193456
2200
2210
2224032
2230
2240
2254608
2260
2270
2285184
2290
2300
2315760
2320
2330
2346336
2350
2360
2376912
2380
2390
2407488
2410
2420
243Listing
244LI
2450
2460
2470
2480
2490
2501
25123
2520
2531
2540
2551
256NEIN
257NEIN
258NEIN
259240
2600
2610
26216
2630
2640
2650
2660
2670
2680
2690
270NEIN
271
27213
273576
2740
2750
2761152
2770
2780
2791728
2800
2810
2822304
2830
2840
2852880
2860
2870
2883456
2890
2900
2914032
2920
2930
2944608
2950
2960
2975184
2980
2990
3005760
3010
3020
3036336
3040
3050
3066912
3070
3080
3097488
3100
3110
312�berschrift
313U0
3140
3150
3160
3170
3185
31935
32028
3212
3221
3230
3241
325NEIN
326NEIN
327JA
328240
3290
3300
33116
3320
3330
3340
3350
3360
3370
3380
339NEIN
340
34113
342576
3430
3440
3451152
3460
3470
3481728
3490
3500
3512304
3520
3530
3542880
3550
3560
3573456
3580
3590
3604032
3610
3620
3634608
3640
3650
3665184
3670
3680
3695760
3700
3710
3726336
3730
3740
3756912
3760
3770
3787488
3790
3800
381�berschrift X.
382U1
3830
3840
3850
3860
3875
38835
38928
3902
3911
3920
3931
394NEIN
395NEIN
396JA
397240
3981
3990
40016
4010
4020
4030
4040
4050
4060
4070
408NEIN
409
41013
411576
4120
4130
4141152
4150
4160
4171728
4180
4190
4202304
4210
4220
4232880
4240
4250
4263456
4270
4280
4294032
4300
4310
4324608
4330
4340
4355184
4360
4370
4385760
4390
4400
4416336
4420
4430
4446912
4450
4460
4477488
4480
4490
450�berschrift X.X.
451U2
4520
4530
4540
4550
4566
45735
45824
4592
4601
4610
4621
463NEIN
464NEIN
465JA
466240
4672
4680
46916
4700
4710
4720
4730
4740
4750
4760
477NEIN
478
47913
480576
4810
4820
4831152
4840
4850
4861728
4870
4880
4892304
4900
4910
4922880
4930
4940
4953456
4960
4970
4984032
4990
5000
5014608
5020
5030
5045184
5050
5060
5075760
5080
5090
5106336
5110
5120
5136912
5140
5150
5167488
5170
5180
519�berschrift X.X.X.
520U3
5210
5220
5230
5240
5256
52635
52720
5282
5291
5300
5311
532NEIN
533NEIN
534JA
535240
5363
5370
53816
5390
5400
5410
5420
5430
5440
5450
546NEIN
547
54813
549576
5500
5510
5521152
5530
5540
5551728
5560
5570
5582304
5590
5600
5612880
5620
5630
5643456
5650
5660
5674032
5680
5690
5704608
5710
5720
5735184
5740
5750
5765760
5770
5780
5796336
5800
5810
5826912
5830
5840
5857488
5860
5870
588�berschrift X.X.X.X.
589U4
5900
5910
5920
5930
5947
59535
59620
5970
5981
5990
6001
601NEIN
602NEIN
603NEIN
604240
6054
6060
60716
6080
6090
6100
6110
6120
6130
6140
615NEIN
616
61713
618576
6190
6200
6211152
6220
6230
6241728
6250
6260
6272304
6280
6290
6302880
6310
6320
6333456
6340
6350
6364032
6370
6380
6394608
6400
6410
6425184
6430
6440
6455760
6460
6470
6486336
6490
6500
6516912
6520
6530
6547488
6550
6560
657�berschrift X.X.X.X.X.
658U5
6590
6600
6610
6620
6637
66435
66520
6660
6671
6680
6691
670NEIN
671NEIN
672NEIN
673240
6745
6750
67616
6770
6780
6790
6800
6810
6820
6830
684NEIN
685
68613
687576
6880
6890
6901152
6910
6920
6931728
6940
6950
6962304
6970
6980
6992880
7000
7010
7023456
7030
7040
7054032
7060
7070
7084608
7090
7100
7115184
7120
7130
7145760
7150
7160
7176336
7180
7190
7206912
7210
7220
7237488
7240
7250
726Einr�ckung 4 Sp / 4 Sp
727E1
728576
729576
7300
7310
7329
73335
73420
7350
7361
7370
7381
739NEIN
740NEIN
741NEIN
742240
7430
7440
74516
7460
7470
7480
7490
7500
7510
7520
753NEIN
754
75513
756576
7570
7580
7591152
7600
7610
7621728
7630
7640
7652304
7660
7670
7682880
7690
7700
7713456
7720
7730
7744032
7750
7760
7774608
7780
7790
7805184
7810
7820
7835760
7840
7850
7866336
7870
7880
7896912
7900
7910
7927488
7930
7940
795Einr�ckung 8 Sp / 8 Sp
796E2
7971150
7981150
7990
8000
8019
80235
80320
8040
8051
8060
8071
808NEIN
809NEIN
810NEIN
811240
8120
8130
81416
8150
8160
8170
8180
8190
8200
8210
822NEIN
823
82413
825576
8260
8270
8281152
8290
8300
8311728
8320
8330
8342304
8350
8360
8372880
8380
8390
8403456
8410
8420
8434032
8440
8450
8464608
8470
8480
8495184
8500
8510
8525760
8530
8540
8556336
8560
8570
8586912
8590
8600
8617488
8620
8630
864Einr�ckung 0 Sp / 4 Sp
865E3
8660
867564
8680
8690
8709
87135
87220
8730
8741
8750
8761
877NEIN
878NEIN
879NEIN
880240
8810
8820
88316
8840
8850
8860
8870
8880
8890
8900
891NEIN
892
89313
894576
8950
8960
8971152
8980
8990
9001728
9010
9020
9032304
9040
9050
9062880
9070
9080
9093456
9100
9110
9124032
9130
9140
9154608
9160
9170
9185184
9190
9200
9215760
9220
9230
9246336
9250
9260
9276912
9280
9290
9307488
9310
9320
933Einr�ckung 4 Sp / 8 Sp
934E4
935564
9361150
9370
9380
9399
94035
94120
9420
9431
9440
9451
946NEIN
947NEIN
948NEIN
949240
9500
9510
95216
9530
9540
9550
9560
9570
9580
9590
960NEIN
961
96213
963576
9640
9650
9661152
9670
9680
9691728
9700
9710
9722304
9730
9740
9752880
9760
9770
9783456
9790
9800
9814032
9820
9830
9844608
9850
9860
9875184
9880
9890
9905760
9910
9920
9936336
9940
9950
9966912
9970
9980
9997488
10000
10010
1002Funktionsparameter
1003FP
10040
10052891
10060
10070
10089
100935
101020
10110
10121
10130
10141
1015NEIN
1016NEIN
1017NEIN
1018240
10190
10200
102116
10220
10230
10240
10250
10260
10270
10280
1029NEIN
1030
103113
1032576
10330
10340
10351152
10360
10370
10381728
10390
10400
10412304
10420
10430
10442880
10450
10460
10473456
10480
10490
10504032
10510
10520
10534608
10540
10550
10565184
10570
10580
10595760
10600
10610
10626336
10630
10640
10656912
10660
10670
10687488
10690
10700
1071Inhaltsverzeichnis
1072IV
10730
10740
10750
10760
10779
107835
107920
10800
10811
10820
10831
1084NEIN
1085NEIN
1086NEIN
1087240
10880
10890
109016
10910
10920
10930
10940
10950
10960
10970
1098NEIN
1099
11001
11017653
11020
11030
1104Stichwortverzeichnis
1105SV
11060
11070
11080
11090
11109
111135
111220
11130
11141
1115141
11161
1117JA
1118NEIN
1119NEIN
1120240
11210
11220
112316
11240
11250
11260
11270
11280
11290
11300
1131NEIN
1132
11331
11343744
11351
11360
1137Fettschrift einzeilig
1138F1
11390
11400
11410
11420
11437
114465
114520
11462
11471
11480
11491
1150NEIN
1151NEIN
1152NEIN
1153240
11540
11550
115616
11570
11580
11590
11600
11610
11620
11630
1164NEIN
1165
116613
1167576
11680
11690
11701152
11710
11720
11731728
11740
11750
11762304
11770
11780
11792880
11800
11810
11823456
11830
11840
11854032
11860
11870
11884608
11890
11900
11915184
11920
11930
11945760
11950
11960
11976336
11980
11990
12006912
12010
12020
12037488
12040
12050
1206Punktliste
1207PL
12080
1209564
12100
12110
12129
121335
121420
12150
12161
12170
12181
1219NEIN
1220NEIN
1221NEIN
1222240
12230
12240
122516
12260
12270
12280
12290
12300
12310
12320
1233NEIN
1234
123513
1236566
12370
12380
12391133
12400
12410
12421728
12430
12440
12452304
12460
12470
12482880
12490
12500
12513456
12520
12530
12544032
12550
12560
12574608
12580
12590
12605184
12610
12620
12635760
12640
12650
12666336
12670
12680
12696912
12700
12710
12727488
12730
12740
1275Fu�zeile
1276FZ
12770
12780
12790
12800
12813
128297
128320
12842
12851
12860
12871
1288NEIN
1289NEIN
1290NEIN
1291240
12920
12930
129416
12950
12960
12970
12980
12990
13000
13010
1302NEIN
1303
13041
13057200
13061
13070
1308Kopfzeile
1309KZ
13100
13110
13120
13130
13143
131597
131620
13172
13181
13190
13201
1321NEIN
1322NEIN
1323NEIN
1324240
13250
13260
132716
13280
13290
13300
13310
13320
13330
13340
1335NEIN
1336
13371
13387920
13391
13400
1341Grund-Seitenlayout
1342GS
1343566
1344609
13452436
1346679
13471416
13481416
13490
13500
13511
1352NEIN
13530
13540
1355
1356AkzBf3#_PFAD##_TEXTNAME#	6-#_S#-
1357Bf3�������������������������������������������������������������
1358
1359AfzBf3$Date:   22 Jan 1992 12:40:36  $	$Revision:   1.1  $
1360
1361Stichwortverzeichnis
1362SV
1363566
1364609
13652437
1366680
13671416
13681416
1369566
13700
13712
1372NEIN
13730
13740
1375
1376AliBf3Stichwortverzeichnis
1377AliBf3�������������������������������������������������������������
1378�������
1379
1380Ali6Bf3- #_S# -B00
1381
1382GS - ohne Fu�zeile
1383KF
1384566
1385609
13862437
1387680
13881416
13891416
13900
13910
13921
1393NEIN
13940
13950
1396
1397AliBf3#_KATEGORIE# / #_THEMA2#
1398AliBf3���������������������������������������������������������
1399
1400Ali
1401
1402Inhaltsverzeichnis
1403IV
1404566
1405609
14062437
1407680
14081416
14091416
14100
14110
14121
1413NEIN
14140
14150
1416
1417AliBf3Inhaltsverzeichnis
1418AliBf3�������������������������������������������������������������
1419�������
1420
1421Ali
1422
1423
1424
1425
14260
1427
14280
1429
1430SkfAga
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440Au0	#_KATEGORIE#
1441Aga
1442
1443Au0	#_THEMA2#
1444Aga
1445
1446Au0
1447Aga
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460Au0	#_AUTOR#
1461Aga
1462
1463Au0	STAR DIVISION / STAR LAB Hamburg
1464Aga
1465
1466Au0	Stand: $Date:   22 Jan 1992 12:40:36  $
1467Aga
1468
1469Sgs
1470SkfAgaPA
1471
1472
1473Au0#_KATEGORIE#
1474Aga
1475
1476
1477AfpDokumentenname	#_THEMA2#
1478Aga
1479AfpProjektname	#_THEMA1#
1480Aga
1481AfpVersionsnummer	$Revision:   1.1  $
1482Aga
1483
1484Afperstellt	16. September 1991
1485Aga
1486Afpge�ndert	$Date:   22 Jan 1992 12:40:36  $
1487Aga
1488
1489AfpDateiname	#_PFAD##_TEXTNAME#
1490Aga
1491
1492AfpAutor	#_AUTOR#
1493Aga
1494AfpBearbeiter	$Author:   MM  $
1495Aga
1496AfpQualit�tskontrolle
1497Aga
1498
1499AfpStatus	XX	in Arbeit
1500Afp	!__	fertiggestellt
1501Afp	!__	abgenommen
1502Afp	!__	freigegeben
1503Aga
1504
1505AfpVertraulich	__ Ja   XX Nein
1506Aga
1507
1508AfpCopyright (C)	Star Division 1990
1509Aga
1510Sgspa
1511Au1#1 Einleitung
1512Aga
1513In diesem Dokument werden die Klassen beschrieben, die die Fehlerbehandlung organisieren.
1514
1515Hinweise zur Implementation
1516Bevor eine dieser Klassen benutzt wird, mu� die Funktion InitRscCompiler aufgerufen werden.
1517AgaPA
1518Au1#2 Klassenbeschreibung
1519Aga
1520AgaERRTYPE:
1521Diese Klasse enth�lt eine Fehler- oder eine Warnungsnummer.
1522
1523RscError:
1524Diese Klasse �bernimmt die Ausgabe der Fehlermeldungen.
1525
1526Au1#3 Globale Funktionen
1527Aga
1528RscExit():
1529Die Funktion mu� von jedem Programm implementiert werden, die Klassen aus dem rsc-System
1530benutzen. Die Funktion bedeutet, da� das Programm sofort beendet werden mu�, weil ein
1531scherwiegender Programmfehler aufgetreten ist.
1532
1533SivPA
1534
1535Au0Inhaltsverzeichnis
1536Aga
1537Aiv1. Einleitung	M3
15382. Klassenbeschreibung	D4
15393. Globale Funktionen	E4
1540ERRTYPE	S6
1541RscError	R10
1542::RscExit()	O15
1543Stichwortverzeichnis	F17
1544Sgs
1545Au0
1546Aga
1547Au0PAERRTYPE
1548Aga
1549Aliclass ERRTYPE {
1550public:
1551    ERRTYPE();
1552    ERRTYPE( USHORT nErr );
1553    ERRTYPE& operator = ( const ERRTYPE & rError );
1554    operator  USHORT();
1555    BOOL IsError();
1556    BOOL IsOk();
1557    BOOL IsWarning();
1558    void Clear();
1559};
1560
1561#define ERR_OK
1562#define ERR_ERROREND
1563#define ERR_WARNING
1564#define ERR_WARNINGEND
1565Aga
1566Af1Beschreibung
1567Aga
1568Eine Instanz dieser Klassen enth�lt entweder eine Fehler- oder eine Warnungsnummer oder keines von
1569beiden. Zu beachten ist, da� eine Fehlernummer nicht �berschrieben werden kann (!der erste Fehler ist
1570interressant ).
1571
1572Af1Anmerkungen
1573AgaWarnungen werden von Fehlernummern �berschrieben, aber nicht von Warnungsnummern.
1574
1575Af1Querverweise
1576Aga
1577Klasse: RscError.
1578
1579Af1Beispiel
1580Aga
1581Ali.....
1582ERRTYPE aError;
1583
1584aError = ERR_OPENFILE;
1585aError = ERR_ERROR;
1586if( ERR_OPENFILE == aError )
1587	printf( "Fehler: Datei kann nicht g�ffnet werden!\n" );
1588else
1589	printf( "Fehler: Allgemeiner Fehler!\n");
1590.....
1591Aga
1592AgaDie Ausgabe hei�t:
1593Fehler: Datei kann nicht ge�ffnet werden!
1594
1595Au0PAERRTYPE::ERRTYPE()
1596Aga
1597AliERRTYPE::ERRTYPE();
1598ERRTYPE::ERRTYPE( USHORT nErrNo );
1599ERRTYPE::ERRTYPE( const ERRTYPE & rError );
1600Aga
1601Af1Beschreibung
1602Aga
1603Die wird eine Instanz ERRTYPE erzeugt.
1604
1605Af1Parameter
1606Aga
1607AfpnErrNo	diese Zahl ist der Fehler der in die Instanz eingetragen wird.
1608rError	aus dieser Instanz wird der Fehler �bernommen.
1609Aga
1610Af1Anmerkungen
1611Aga
1612Wird der leere Konstruktor verwendet, dann ist die Fehlernummer ERR_OK. Die Methode IsOk()
1613liefert TRUE.
1614
1615Af1Querverweise
1616Aga
1617Klassen:  RscError
1618Methoden: IsError(), IsOk(), Clear().
1619
1620Af1Beispiel
1621AgaHier wird gezeigt wie Fehler zugewiesen und �berschrieben werden.
1622
1623AliERRTYPE aErr;
1624printf( aErr.IsOk() ? "TRUE", "FALSE" );     //Ausg.: TRUE
1625aErr = WRN_LOCALID; //Warnung zuweisen
1626printf( aErr.IsOk() ? "TRUE", "FALSE" );     //Ausg.: TRUE
1627printf( aErr.IsWarning() ? "TRUE", "FALSE" );//Ausg.: TRUE
1628printf( aErr.IsError() ? "TRUE", "FALSE" );  //Ausg.: FALSE
1629aErr = ERR_ERROR;   //Fehler zuweisen
1630printf( aErr.IsOk() ? "TRUE", "FALSE" );     //Ausg.: FALSE
1631printf( aErr.IsWarning() ? "TRUE", "FALSE" );//Ausg.: FALSE
1632printf( aErr.IsError() ? "TRUE", "FALSE" );  //Ausg.: TRUE
1633aErr = ERR_OK;     //Fehler aufheben geht so nicht
1634printf( aErr.IsOk() ? "TRUE", "FALSE" );     //Ausg.: FALSE
1635printf( aErr.IsError() ? "TRUE", "FALSE" );  //Ausg.: TRUE
1636aError.Clear();    //Fehler aufheben
1637printf( aErr.IsOk() ? "TRUE", "FALSE" );     //Ausg.: TRUE
1638printf( aErr.IsError() ? "TRUE", "FALSE" );  //Ausg.: FALSE
1639Aga
1640Aga���������������������������������������������������������
1641Aga
1642Au0ERRTYPE::operator =()
1643Aga
1644AliERRTYPE & ERRTYPE::operator &( const ERRTYPE & rErr );
1645Aga
1646Af1Beschreibung
1647Aga
1648Der Zuweisungsoperator kopiert den Fehler oder die Warnung von rErr in die Instanz. Ein kopieren
1649findet nicht statt, wenn in der Instanz schon ein Fehler eingetragen wurde.
1650
1651Af1Parameter
1652Aga
1653AfprErr	aus dieser Instanz wird der Fehler �bernommen.
1654Aga
1655Af1Return-Werte
1656Aga
1657Die eigene Instanz wird zur�ckgeliefert.
1658
1659Af1Querverweise
1660Aga
1661Methoden: operator USHORT().
1662
1663Af1Beispiel
1664Aga
1665AliERRTYPE aError( ERR_RSCRANGE );
1666printf( ERR_RSCRANGE == aError ? "TRUE" : "FALSE" );
1667    //Ausgabe: TRUE
1668//Versuch den Fehler zu ueberschreiben (geht nicht)
1669aError = ERRTYPE( ERR_ERROR );
1670printf( ERR_ERROR == aError ? "TRUE" : "FALSE" );
1671    //Ausgabe: FALSE
1672aError.Clear();
1673aError = ERRTYPE( ERR_ERROR );
1674printf( ERR_ERROR == aError ? "TRUE" : "FALSE" );
1675    //Ausgabe: TRUE
1676Aga
1677Aga���������������������������������������������������������
1678Aga
1679Au0ERRTYPE::operator USHORT()
1680Aga
1681AliERRTYPE::operator USHORT();
1682Aga
1683Af1Return-Werte
1684Aga
1685Die Fehlernummer in der Instanz wird zur�ckgeliefert.
1686
1687Af1Querverweise
1688Aga
1689Methoden: operator =().
1690
1691Aga���������������������������������������������������������
1692Aga
1693Au0ERRTYPE::IsError()
1694Aga
1695AliBOOL ERRTYPE::IsError();
1696Aga
1697Af1Beschreibung
1698Aga
1699Diese Methode zeigt an ob in der Instanz eine Fehlernummer steht, die einen Fehler anzeigt.
1700
1701Af1Return-Werte
1702Aga
1703AfpTRUE	wenn die Fehlernummer im Bereich [0, ERR_ERROREND] liegt.
1704FALSE	wenn die Fehlernummer im Bereich ]ERR_ERROREND, 0xFFFF
1705"] liegt.
1706Aga
1707Af1Querverweise
1708Aga
1709Methoden: IsOk(), IsWarning(), Clear().
1710Aga
1711Aga���������������������������������������������������������
1712Aga
1713Au0ERRTYPE::IsOk()
1714Aga
1715AliBOOL ERRTYPE::IsOk();
1716Aga
1717Af1Beschreibung
1718Aga
1719Diese Methode zeigt an ob in der Instanz eine Fehlernummer steht, die keinen Fehler anzeigt.
1720
1721Af1Return-Werte
1722Afp
1723TRUE	wenn die Fehlernummer im Bereich ]ERR_ERROREND,
1724"0xFFFF] liegt.
1725FALSE	wenn die Fehlernummer im Bereich [0, ERR_ERROREND] liegt.
1726Aga
1727Af1Querverweise
1728Aga
1729Methoden: IsError(), IsWarning(), Clear().
1730Aga
1731Aga���������������������������������������������������������
1732Aga
1733Au0ERRTYPE::IsWarning()
1734Aga
1735AliBOOL ERRTYPE::IsWarning();
1736Aga
1737Af1Beschreibung
1738Aga
1739Diese Methode zeigt an ob in der Instanz eine Fehlernummer steht, die einen Warnung anzeigt.
1740
1741Af1Return-Werte
1742Afp
1743TRUE	wenn die Fehlernummer im Bereich [ERR_WARNING,
1744"ERR_WARNINGEND] liegt.
1745FALSE	wenn die Fehlernummer in einem anderen Bereich liegt.
1746Aga
1747Af1Querverweise
1748Aga
1749Methoden: IsOk(), IsError(), Clear().
1750Aga
1751Aga���������������������������������������������������������
1752
1753Au0ERRTYPE::Clear()
1754Aga
1755Alivoid ERRTYPE::Clear();
1756Aga
1757Af1Beschreibung
1758Aga
1759Die Fehlernummer wird auf ERR_OK gesetzt. Das hei�t die Methode IsOk() liefert TRUE zur�ck.
1760Aga
1761Aga���������������������������������������������������������
1762Au0PARscError
1763Aga
1764Ali#define ERR_ERROR           0x0100
1765#define ERR_UNKNOWN_METHOD  0x0101
1766#define ERR_OPENFILE        0x0102
1767#define ERR_NOCHAR          0x0103
1768#define ERR_NORSCINST       0x0104
1769#define ERR_USAGE           0x0105
1770#define ERR_NOINPUT         0x0106
1771#define ERR_UNKNOWNSW       0x0107
1772#define ERR_REFTODEEP       0x0108
1773
1774#define ERR_RSCRANGE        0x0200
1775    #define ERR_RSCRANGE_OUTDEFSET  (ERR_RSCRANGE +1 )
1776#define ERR_RSCENUM         0x0210
1777#define ERR_RSCFLAG         0x0220
1778#define ERR_RSCCONT         0x0240
1779    #define ERR_CONT_INVALIDPOS     (ERR_RSCCONT +1 )
1780    #define ERR_CONT_INVALIDTYPE    (ERR_RSCCONT +2 )
1781#define ERR_RSCCMPED        0x0250
1782#define ERR_RSCINST         0x0260
1783    #define ERR_RSCINST_NOVARNAME   (ERR_RSCINST +1 )
1784    #define ERR_RSCINST_RESERVEDNAME (ERR_RSCINST +2 )
1785#define ERR_LEX             0x0270
1786#define ERR_YACC            0x0280
1787    #define ERR_DOUBLEID            (ERR_YACC    +1 )
1788    #define ERR_FALSETYPE           (ERR_YACC    +2 )
1789    #define ERR_NOVARIABLENAME      (ERR_YACC    +3 )
1790    #define ERR_USHORTRANGE         (ERR_YACC    +4 )
1791    #define ERR_IDRANGE             (ERR_YACC    +5 )
1792    #define ERR_NOCOPYOBJ           (ERR_YACC    +6 )
1793    #define ERR_REFNOTALLOWED       (ERR_YACC    +7 )
1794    #define ERR_DOUBLEDEFINE        (ERR_YACC    +8 )
1795    #define ERR_COPYNOTALLOWED      (ERR_YACC    +9 )
1796    #define ERR_IDEXPECTED          (ERR_YACC    +10)
1797    #define ERR_ZERODIVISION        (ERR_YACC    +11)
1798    #define ERR_PRAGMA              (ERR_YACC    +12)
1799    #define ERR_DECLAREDEFINE       (ERR_YACC    +13)
1800
1801    #define WRN_LOCALID             (ERR_WARNING +1 )
1802    #define WRN_GLOBALID            (ERR_WARNING +2 )
1803    #define WRN_SUBINMEMBER         (ERR_WARNING +3 )
1804    #define WRN_CONT_NOID           (ERR_WARNING +4 )
1805    #define WRN_STR_REFNOTFOUND     (ERR_WARNING +5 )
1806    #define WRN_MGR_REFNOTFOUND     (ERR_WARNING +6 )
1807    #define WRN_CONT_DOUBLEID       (ERR_WARNING +7 )
1808
1809class RscError{
1810public:
1811    USHORT  nErrors;// Anzahl der Fehler
1812                    RscError();
1813    void            SetListFile( FILE * fList );
1814    virtual void    StdOut( const char * );
1815    virtual void    LstOut( const char * );
1816    virtual void    Error( ERRTYPE nError, RscTop* pClass,
1817                           const RscId &aId,
1818                           const char * pMessage = NULL );
1819    virtual void    FatalError( ERRTYPE nError, const RscId
1820                      &aId, const char * pMessage = NULL );
1821};
1822Aga
1823Af1Beschreibung
1824Aga
1825In dieser Klasse werden Fehlermeldungen ausgegeben. Die Fehlermeldungen werden zur
1826Standartausgabe geschickt und in eine Listing-Datei geschrieben. Nach Aufruf der Methode
1827FatalError() wird die Funktion RscExit() aufgerufen. Diese sollte das Programm terminieren.
1828Die Ausgabe der Fehler hat folgendes Format:
18291.	Zeile in der der Fehler aufgetreten ist.
18302.	Position an der der Fehler aufgetreten ist.
18313.	Fehlernummer: Error ( Typ, Identifier ): Fehlermeldung.
1832
1833Af1Ausnahmen
1834Aga
1835Die Ausgabe wird unter MS-Windows nicht nach "stdout" umgeleitet, sondern sie wird unterdr�ckt.
1836
1837Af1Anmerkungen
1838Aga
1839Die Klasse tauscht Zeilennummern, Zeilen usw. �ber globale Variable mit dem Parser aus. Aus diesem
1840Grund darf der Parser nicht rekursiv aufgerufen werden.
1841Wenn ein Fehler am Ende einer Zeile bemerkt wird, wird h�ufig die Zeile nach der Fehlerhaften
1842angezeigt.
1843
1844Af1Querverweise
1845Aga
1846Klassen:    RscTypCont, ERRTYPE, RscId, RscFileInst, alle Rsc... Klassen.
1847Funktionen: ::RscExit(), ::parser(), ::MacroParser(), ::IncludeParser().
1848
1849Af1Beispiel
1850AgaImplementation der Standartausgabe unter MS-Windows.
1851
1852Ali.....
1853class WinError :: public RscError{
1854	ListBox * pOutput;
1855public:
1856	WinError( ListBox * pListBox ) : RscError(){
1857		pOutput = pListBox;
1858	}
1859	void StdOut( const char * pStr ){
1860		//fuer gute Ausgabeformatierung muesste auf RETURN
1861		//geachtet werden
1862		pOutput.Insert( pStr, LISTBOX_APPEND );
1863	}
1864};
1865.....
1866Agapa���������������������������������������������������������
1867
1868Au0Fehlernummern
1869Aga
1870AfpERR_ERROR	Allgemeiner Fehler, dieser Fehler kann nicht nicht genauer
1871"spezifiziert werden.
1872ERR_UNKNOWN_METHOD	Eine virtuelle Methode die in der abgeleiteten Klasse nicht
1873"implementiert ist. Siehe Methoden der Klasse RscInst: SetString(),
1874"SetNumber .... Man kann die Fehlermeldung als Typfehler
1875"betrachten, das hei�t dieser Typ darf nicht verwendet werden.
1876ERR_OPENFILE	Die Datei mit dem angegebenen Namen konnte nicht ge�ffnet
1877"werden.
1878ERR_NOCHAR	Es konnte kein Zeichen generiert werden. Zum Beispiel kann
1879"'\333' nicht in ein Zeichen umgewandelt werden.
1880ERR_NORSCINST	Interner Fehler, eine Methode soll auf eine ung�ltige Instanz
1881"angewendet werden.
1882ERR_NOINPUT	Es wurde keine Eingabedatei angegeben.
1883ERR_USAGE	Es wird eine Kommandozeilenhilfe ausgegeben (rsc -h).
1884ERR_UNKNOWNSW	In der Kommandozeile wurde ein unbekannter Schalter
1885"verwendet.
1886ERR_REFTODEEP	Referenzen werden nur bis zu einer bestimmten Tiefe aufgel�st.
1887"Der Fehler bedeutet, das Referenzen rekursiv definiert wurden
1888"oder da� sie zu tief verschachtelt sind.
1889ERR_RSCRANGE	In der Klasse RscRange ist ein Fehler aufgetreten.
1890ERR_RSCRANGE_OUTDEFSET	In eine RscRange-Instanz wurde versucht eine Zahl einzusetzen,
1891"die au�erhalb des Wertebereichs liegt.
1892ERR_RSCENUM	In der Klasse RscEnum ist ein Fehler aufgetreten.
1893ERR_RSCFLAG	In der Klasse RscFlag ist ein Fehler aufgetreten.
1894ERR_RSCCONT	In der Klasse RscCont ist ein Fehler aufgetreten.
1895ERR_CONT_INVALIDPOS	In einer RscCont-Instanz wurde auf eine Position zugegriffen, auf
1896"der sich keine Instanz befunden hat.
1897ERR_CONT_INVALIDTYPE	
1897In einer RscCont-Instanz wurde versucht eine Instanz mit
1898"falschem Typ einzusetzen.
1899ERR_RSCINST	In der Klasse RscInst ist ein Fehler aufgetreten.
1900ERR_RSCINST_NOVARNAME	Eine Methode der Klasse RscInst die einen Variablennamen als
1901"Parameter ben�tigt stellt fest, das dieser Name in der
1902"entsprechenden Instanz nicht als Variable definiert ist. Vermutlich
1903"hat die RscInst-Instanz einen anderen Typ als erwartet.
1904ERR_RSCINST_RESERVEDNAME	F�r ein Makro soll eine Name verwendet werden, der
1905"schon belegt ist. Namen k�nnen zum Beispiel schon f�r Variablen
1906"vergeben sein.
1907Aga
1908Es folgen Fehler die beim Parsen auftreten k�nnen.
1909AfpERR_YACC	Allgemeiner Fehler der beim Parsen aufgetreten ist.
1910ERR_DOUBLEID	Zwei globale Resourcen haben den gleichen Identifier.
1911ERR_FALSETYPE	Der verwendete Typ ist nicht erlaubt.
1912ERR_NOVARIABLENAME	Die Variable darf hier nicht verwendet werden.
1913ERR_USHORTRANGE	Der Zahlenwert ist au�erhalb von [0, 0xFFFF].
1914ERR_IDRANGE	Der Zahlenwert ist au�erhalb von [0, 0x7FFF].
1915ERR_NOCOPYOBJ	Defaultresource wurde nicht gefunden. Eine Resourceinstanz kann
1916"mit einer anderen initialisiert werden. Diese ander Instanz wurde
1917"nicht gefunden.
1918ERR_REFNOTALLOWED	An dieser Stelle ist die Angabe einer Referenz verboten.
1919ERR_DOUBLEDEFINE	Ein Makroname soll doppelt vergeben werden.
1920ERR_COPYNOTALLOWED	Die Angabe einer Defaultresource ist verboten.
1921ERR_IDEXPECTED	Ein Identifier mu� Angegeben werden.
1922ERR_ZERODIVISION	Es sollte durch Null geteilt werden.
1923ERR_PRAGMA	Bei der Angabe eines Pragmas ist ein Fehler aufgetreten.
1924ERR_DECLAREDEFINE	Ein Makro mit dieser Deklaration kann nicht erstellt werden.
1925"Entweder eine rekursive Definition oder die verwendeten Makros
1926"sind nicht in der Abh�ngigkeitsliste.
1927Aga
1928Es folgen Warnungen.
1929AfpWRN_LOCALID	Resourcen die sich innerhalb einer anderen Resource befinden
1930"(Unterresourcen) haben ein Identifier �ber 255.
1931WRN_GLOBALID	Globale Resourcen haben einen Identifier unter 256.
1932WRN_SUBINMEMBER	Die Unterresource werden nicht beachtet. Das bedeutet, da� auf
1933"diese Resourcen zur Laufzeit nicht zugegriffen werden kann.
1934WRN_CONT_NOID	Die Resourcen haben einen ung�ltigen Identifier. Auf diese
1935"Resourcen kann zur Laufzeit nicht zugegriffen werden.
1936WRN_STR_REFNOTFOUND	Beim schreiben ein rc-Datei konnte eine Stringreferenz nicht
1937"aufgel�st werden.
1938WRN_MGR_REFNOTFOUND	Beim schreiben ein rc-Datei konnte eine Referenz nicht aufgel�st
1939"werden. Wenn auf Unterresourcen zugegriffen wird, die sich in
1940"der referenzierten Resource befinden, dann kann ein
1941"Laufzeitfehler auftreten.
1942WRN_CONT_DOUBLEID	Zwei Unterresource haben den gleichen Identifier.
1943Aga
1944���������������������������������������������������������
1945
1946Au0RscError::RscError()
1947Aga
1948AliRscError::RscError();
1949Aga
1950Af1Beschreibung
1951Aga
1952Eine Instanz wird erzeugt. Der Fehlerz�hler wird auf Null gesetzt.
1953
1954Aga���������������������������������������������������������
1955Aga
1956Au0RscError::SetListFile()
1957Aga
1958Alivoid RscError::SetListFile( FILE * fLstFile );
1959Aga
1960Af1Beschreibung
1961Aga
1962Es wird eine Datei angegeben in die das Listing und die Fehlermeldungen geschrieben werden.
1963fListing darf auch NULL sein, dann wird kein Listing erzeugt.
1964
1965Af1Parameter
1966Aga
1967AfpfLstFile	Dies ist die Datei in die geschrieben wird.
1968Aga
1969Af1Anmerkung
1970Aga
1971F�r das �ffnen und Schlie�en ist der Aufrufer verantwortlich.
1972
1973Aga���������������������������������������������������������
1974Aga
1975Au0RscError::StdOut()
1976Aga
1977Alivirtual void RscError::StdOut( const char * pStr );
1978Aga
1979Af1Beschreibung
1980Aga
1981Alle Zeichenketten werden nach stdout geschrieben.
1982
1983Af1Parameter
1984Aga
1985AfppStr	Dies ist die Zeichenkette die geschrieben wird.
1986Aga
1987Af1Ausnahmen
1988Aga
1989Unter MS-Windows wird nicht nach stdout ausgegeben.
1990Aga
1991Aga���������������������������������������������������������
1992Aga
1993Au0RscError::StdLst()
1994Aga
1995Alivirtual void RscError::StdLst( const char * pStr );
1996Aga
1997Af1Beschreibung
1998Aga
1999Alle Zeichenketten werden in die Listing-Datei geschrieben.
2000
2001Af1Parameter
2002Aga
2003AfppStr	Dies ist die Zeichenkette die geschrieben wird.
2004Aga
2005Af1Ausnahmen
2006Aga
2007Wenn keine Listing-Datei angegeben ist passiert nichts.
2008Aga
2009Querverweise
2010
2011Methoden: SetListFile().
2012
2013Aga���������������������������������������������������������
2014
2015Au0RscError::Error()
2016Aga
2017Alivirtual void RscError::Error( ERRTYPE aError,
2018                              RscTop * pClass,
2019                              const RscId & rId,
2020                              const char * pMess = NULL );
2021Aga
2022Af1Beschreibung
2023Aga
2024Mit dieser Methode werden Fehler- und Warnungsmeldungen ausgegeben. Die Methode benutzt die
2025Methoden StdOut() und LstOut(). Wenn eine Fehlermeldung vorliegt wird der Fehlerz�hler um eins
2026erh�ht.
2027
2028Af1Parameter
2029Aga
2030AfpaError	Hierin ist die Fehlernummer gespeichert. �ber diese wird der
2031"Fehlertext ermittelt.
2032pClass	Dies ist der Typ der Resourceinstanz, in der der Fehler aufgetreten
2033"ist. pClass darf NULL sein.
2034rId	Dies ist der Identifier der Resourceinstanz, in der der Fehler
2035"aufgetreten ist.
2036pMess	Dies ist der Fehlertext. pMess darf NULL sein.
2037Aga
2038Aga���������������������������������������������������������
2039Aga
2040Au0RscError::FatalError()
2041Aga
2042Alivirtual void RscError::FatalError( ERRTYPE aError,
2043                              const RscId & rId,
2044                              const char * pMess = NULL );
2045Aga
2046Af1Beschreibung
2047Aga
2048Mit dieser Methode werden schwerwiegende Fehler angezeigt. Die Methode benutzt die Methoden
2049StdOut() und LstOut(). Die Funktion RscExit( 1 ) wird gerufen, diese sollte das Programm beenden.
2050
2051Af1Parameter
2052Aga
2053AfpaError	Hierin ist die Fehlernummer gespeichert. �ber diese wird der
2054"Fehlertext ermittelt.
2055rId	Dies ist der Identifier der Resourceinstanz, in der der Fehler
2056"aufgetreten ist.
2057pMess	Dies ist der Fehlertext. pMess darf NULL sein.
2058Aga
2059Aga���������������������������������������������������������
2060Aga
2061Au0::RscExit()
2062Aga
2063Alivoid RscExit( USHORT nExit );
2064Aga
2065Af1Beschreibung
2066Aga
2067Diese Methode wird gerufen wenn ein schwerwiegende Fehler aufgetreten ist. Das Programm mu�
2068beendet werden.
2069Fehlernummer:
2070Afp1	 Die Funktion FatalError() wurde aufgerufen.
207110	Mit den c-Funktionen alloc() oder realloc() wird kein Speicher
2072"mehr zur Verf�gung gestellt.
207311	Hashtabelle l�uft �ber.
207412	Es wird mehr als 64k -1 Byte Speicher angefordert.
207513	In einem internen Zeichenkettenfeld ist nicht genug Platz.
207614	Es wird ein Objekt gel�scht auf das noch mindestens eine
2077"Referenz besteht.
207816	Maximal 32 Variablen pro Klasse erlaubt.
2079Aga
2080Af1Parameter
2081Aga
2082AfpnExit	Mit Hilfe dieser Zahl wird der aufgetreten Fehler etwas genauer
2083"beschrieben.
2084Aga
2085Af1Beispiel
2086Aga
2087Alivoid RscExit( USHORT nExit ){
2088	if( nExit )
2089		printf( "Program exit ist %d\n" nExit );
2090	exit( nExit );
2091};
2092Aga
2093Aga���������������������������������������������������������
2094Aga
2095
2096
2097SsvAgaPA
2098Au0Stichwortverzeichnis
2099Aga
2100Asv::RscExit()	15
2101ERRTYPE::Clear()	9
2102ERRTYPE::ERRTYPE()	7
2103ERRTYPE::IsError()	8
2104ERRTYPE::IsOk()	9
2105ERRTYPE::IsWarning()	9
2106ERRTYPE::operator =()	7
2107ERRTYPE::operator USHORT()	8
2108ERRTYPE	#6
2109Fehlernummern	12
2110RscError	!10
2111RscError::Error()	14
2112RscError::FatalError()	15
2113RscError::RscError()	13
2114RscError::SetListFile()	13
2115RscError::StdLst()	14
2116RscError::StdOut()	13
2117
2118Aga
2119