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 1470SkfAgaPA 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 1510Sgspa 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. 1517AgaPA 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 1533SivPA 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 1547Au0PAERRTYPE 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 1595Au0PAERRTYPE::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 1653AfprErr 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(). 1710Aga 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��������������������������������������������������������� 1762Au0PARscError 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..... 1866Agapa��������������������������������������������������������� 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. 1924ERR_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 1979Af1Beschreibung 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. 2036pMess 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 2093Aga��������������������������������������������������������� 2094Aga 2095 2096 2097SsvAgaPA 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