xref: /trunk/main/rsc/doku/feinkonz.43/rscinst.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
20Schnittstelle
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:   05 Feb 1992 08:23:58  $	$Revision:   1.7  $
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:   05 Feb 1992 08:23:58  $
1467Aga
1468
1469Sgs
1470SkfAgaPA
1471
1472
1473Au0#_KATEGORIE#
1474Aga
1475
1476
1477AfpDokumentenname	#_THEMA2#
1478Aga
1479AfpProjektname	#_THEMA1#
1480Aga
1481AfpVersionsnummer	$Revision:   1.7  $
1482Aga
1483
1484Afperstellt	02. April 1990
1485Aga
1486Afpge�ndert	$Date:   05 Feb 1992 08:23:58  $
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Sivpa
1511
1512Au0Inhaltsverzeichnis
1513Aga
1514Aiv
15151 Einleitung	N4
15162 Klassenbaum	M5
15173 Klassenbeschreibung	E5
1518RscDataBase	O6
1519RscHrc	T14
1520RscSrc	T24
1521RscInst	S31
1522RscInstCopy	O50
1523Stichwortverzeichnis	F53
1524
1525Sgs
1526Au1pa#1 Einleitung
1527Aga
1528In diesem Dokument werden die Klassen beschrieben, mit denen die vom Rsc-Compiler erstellte
1529Datenbasis ver�ndert werden k�nnen. Als Beispiel sei hier der Design-Editor genannt.
1530Um das Verst�ndnis zu erleichtern, ist es hilfreich die Benutzerbeschreibung des Rsc-Compilers zu
1531lesen.
1532
1533Hinweise zur Implementation
1534
1535Die in diesem Dokument beschriebenen Klassen weisen einen hohen Grad an gegenseitigen
1536Abh�ngigkeiten auf. Daher mu� bei der Anwendung einiger Methoden auf diese Zusammenh�nge
1537besonders geachtet werden. Ein genaues lesen der Dokumentation ist unumg�nglich. Zum Beispiel ist
1538das L�schen einer Instanz nicht immer m�glich, da noch Referenzen auf sie bestehen. Diese
1539Schnittstelle ist darauf ausgelegt, da� auf die Daten im Dialogbetrieb zugegriffen wird. Das hei�t, sie
1540ist auf �bersichtlichkeit und Fehlererkennung nicht aber auf Speicher- und Geschwindigkeitseffizienz
1541ausgelegt.
1542Bevor eine dieser Klassen benutzt wird, mu� die InitRscCompiler() Funktion aufgerufen werden.
1543Agapa
1544Au1#2 Klassenbaum
1545Aga
1546RscDataBase
1547RscHrc	->	RscSrc
1548RscInst	->	RscInstCopy
1549
1550
1551Au1#3 Klassenbeschreibung
1552Aga
1553AgaRscDataBase:
1554
1555Diese Klasse stellt Methoden zur Verf�gung mit denen ein Resourceprojekt verwaltet werden kann,
1556wie zum Beispiel das Anlegen einer neuen Datei oder zu einem Klassennamen den Klassentyp
1557erzeugen.
1558
1559AgaRscHrc:
1560
1561Diese Klasse stellt Methoden zur Verf�gung mit denen dateiabh�ngige Informationen und Daten aus
1562der Datenbasis gewonnen werden k�nnen. Es handelt sich hierbei haupts�chlich um Makros. Diese
1563Klasse ist als Sicht auf eine hrc-Datei zu verstehen. Die Daten stehen in der Datenbasis.
1564
1565AgaRscSrc:
1566
1567Diese Klasse stellt Methoden zur Verf�gung mit denen dateiabh�ngige Informationen und Daten aus
1568der Datenbasis gewonnen werden k�nnen. Diese Klasse ist als Sicht auf eine src-Datei zu verstehen.
1569Die Daten stehen in der Datenbasis.
1570
1571RscInst:
1572
1573Eine RscInst repr�sentiert eine Referenz auf eine Resourceinstanz, wie zum Beispiel Farbe oder Breite.
1574Eine Resourceinstanz kann weitere Resourceinstanzen enthalten.
1575
1576RscInstCopy:
1577
1578Diese Instanz repr�sentiert eine Kopie einer Resourceinstanz.
1579
1580Au0PARscDataBase
1581Aga
1582Aliclass RscDataBase {
1583protected:
1584    RscCmdLine  * pCmdLine;
1585    RscTypCont  * pTC;
1586public:
1587                 RscDataBase( RscError * );
1588                 ~RscDataBase();
1589    RscTop*      GetClassType( HASHID nClassName );
1590    BOOL         MakeConsistent( RscInconsList * pList );
1591    RscFileTab * GetFileTab();
1592    RscFile *    GetFileStruct( ULONG lFileKey );
1593    RscStrList * GetPathList();
1594    ULONG        AddSrcFile( const String & rFileName );
1595    ULONG        AddHrcFile( const String & rFileName );
1596    void         ScanForIncFiles( ULONG lFileKey );
1597    void         RemoveFile( ULONG lKey );
1598    RscDefine *  FindDef( const String & rName );
1599    ULONG        GetFileKey( const String & rFileName );
1600};
1601Aga
1602Af1Beschreibung
1603Aga
1604Diese Klasse enth�lt die Klassen RscCmdLine und RscTypCont.
1605Die Klasse RscCmdLine enth�lt die Steuerinformation f�r den Compiler. Die Klasse RscTypCont
1606enth�lt die vom Compiler erstellte DatenBasis.
1607Diese Klasse l�st folgende Aufgaben:
1608	1. Das �berpr�fen der Konsistenz der Datenbasis.
1609	2. Das Bearbeiten der Projektstruktur.
1610
1611Af1Anmerkungen
1612Aga
1613F�r einige Methoden der Klasse RscDataBase gilt, da� sie eventuell auf alle existierenden
1614Resourceinstanzen zugreifen m�ssen. Wenn zum Beispiel die Konsistenz der Datenbasis �berpr�ft
1615wird, kann dies nur �ber die Objekte in der Datenbasis geschehen.
1616
1617Af1Querverweise
1618Aga
1619Klassen:  RscCmdLine, RscTypCont, RscFile, RscDefList, RscError, RscId, RscHrc, RscSrc.
1620Methoden: HashId, GetHashString.
1621
1622Af1Beispiel
1623Aga
1624Im Beispiel wird der einer Resource erfragt.
1625Ali.....
1626Ali// statische Datenstrukturen initialisieren
1627InitRscCompiler();
1628.....
1629RscError	aErrorHandle;              // Fehlerbehandlung
1630RscDataBase	aCmpInst( &aErrorHandle ); // Datenbasis
1631RscTop*	pClassTyp;                  // ein Klassentyp
1632
1633// Typ einer Resource aus dem Namen der Klasse erzeugen
1634pClassTyp = aCmpInst.GetClassType( HashId( "Color" ) );
1635Ali.....
1636
1637Au0PARscDataBase::RscDataBase()
1638Aga
1639AliRscDataBase::RscDataBase( RscError * pErrorHandler );
1640Aga
1641Af1Beschreibung
1642Aga
1643Diese Methode erzeugt eine Instanz der Klasse RscDataBase. Der Scope von dieser Instanz mu�
1644innerhalb des Scopes von pErrorHandler liegen.
1645
1646Af1Parameter
1647Aga
1648AfppErrorHandler	Ein Zeiger auf einen Fehlerhandler. Durch ableiten von der Klasse
1649"RscError kann ein eigener Fehlermechanismus entwickelt werden.
1650Aga
1651Af1Querverweise
1652Aga
1653Klasse: RscError
1654
1655Af1Beispiel
1656Aga
1657Ali.....
1658RscError	aErrorHandler;
1659RscDataBase	aCmpInst( &aErrorHandle );
1660.....
1661Aga
1662Aga���������������������������������������������������������
1663Aga
1664Au0RscDataBase::RscDataBase()
1665Aga
1666AliRscDataBase::~RscDataBase();
1667Aga
1668Af1Beschreibung
1669Aga
1670L�scht die Membervariablen pCmdLine und pTC.
1671
1672Af1Anmerkungen
1673Aga
1674Es d�rfen keine Resourceinstanzen, die mit Hilfe dieser Instanz erzeugt worden sind, mehr existieren.
1675
1676Af1Querverweise
1677Aga
1678Klassen: RscInst, RscCmdLine, RscTypCont, RscIncList, RscHrc, RscSrc.
1679
1680Aga���������������������������������������������������������
1681Aga
1682Au0RscDataBase::GetClassType()
1683Aga
1684AliRscTop * RscDataBase::GetClassType( HASHID aClassName );
1685Aga
1686Af1Beschreibung
1687Aga
1688Aus dem Namen einer Klasse wird der Typ einer Klasse generiert. Der Typ bezieht sich nur auf die
1689RscDataBase-Instanz von der er erzeugt wurde.
1690
1691Af1Parameter
1692Aga
1693AfpaClassName	ist der Name der Klasse.
1694Aga
1695Af1Return-Werte
1696Aga
1697Der Typ der Klasse wird zur�ckgeliefert. Wird unter dem Namen keine Klasse gefunden, dann wird
1698NULL zur�ckgeliefert.
1699
1700Af1Anmerkungen
1701Aga
1702Wenn aus gleichen Namen zweier unterschiedlicher Instanzen Typen erzeugt werden, dann sind diese
1703unterschiedlich.
1704
1705Af1Beispiel
1706Aga
1707Ali.....
1708HASHID	aClassName = HashId( "Color" );
1709RscTop * aType1 = aCmpInst1.GetClassType( aClassName );
1710RscTop * aType2 = aCmpInst2.GetClassType( aClassName );
1711RscTop * aType3 = aCmpInst2.GetClassType( aClassName );
1712.....
1713Aga
1714aType1 ist ungleich zu aType2.
1715aType2 ist gleich zu aType3.
1716
1717Aga���������������������������������������������������������
1718Aga
1719Au0RscDataBase::MakeConsistent()
1720Aga
1721AliBOOL RscDataBase::MakeConsistent( RscInconsList * pList );
1722Aga
1723Af1Beschreibung
1724Aga
1725Es ist m�glich, da� durch Ver�nderungen von Makros die Datenbasis inkonsistent wird. Mit dieser
1726Methode wird versucht, die Datenbasis wieder in einen konsistenten Zustand zu versetzen. Dies kann
1727aber auch scheitern, wenn zum Beispiel der Wertebereich einer Variablen verlassen wird oder die
1728 Identifier von Resourceinstanzen den gleichen Wert haben. pList enth�lt die Makros bei denen es
1729Inkonsistenzen gibt.
1730
1731Af1Parameter
1732Aga
1733AfppList	ist ein Zeiger auf eine Liste von Makro-Paaren. pList darf auch
1734"NULL sein.
1735Aga
1736Af1Return-Werte
1737Aga
1738AfpTRUE	die Datenbasis ist wieder konsistent.
1739FALSE	es konnte kein konsistenter Zustand hergestellt werden.
1740Aga
1741Af1Anmerkungen
1742Aga
1743Wenn die Datenbasis inkonsistent ist, d�rfen auf ihr keine Operationen ausgef�hrt werden.
1744
1745Af1Querverweise
1746Aga
1747Klassen:  RscInconsList.
1748Methoden: RscInst::IsConsistent.
1749
1750Af1Beispiel
1751Aga
1752Ali...
1753RscDataBase *pDataBase = new ...; // DatenBasis
1754RscSrc      aSrc( ... );  //entspricht einer .src Datei
1755RscDefine * pDef1, *pDef2;        //Makros
1756
1757aSrc.NewDef( "DEF1", 1000, LIST_APPEND ); //Makro erzeugen
1758aSrc.NewDef( "DEF2", 1001, LIST_APPEND ); //Makro erzeugen
1759pDef1 = aSrc.FindDef( "DEF1" );           //Makro holen
1760pDef2 = aSrc.FindDef( "DEF2" );           //Makro holen
1761
1762/* aStrInst enth�lt eine g�ltige String-Instanz */
1763//String-Instanz unter Id mit Wert 1000 einsetzen
1764AliaSrc.SetRscInst( RscId( pDef1 ), aStrInst );
1765//String-Instanz unter Id mit Wert 1001 einsetzen
1766AliaSrc.SetRscInst( RscId( pDef2 ), aStrInst );
1767//aendern des Makro-Wertes
1768aSrc.ChangeDef( "DEF2", 1000 );
1769//Datenbasis ueberpruefen
1770if( pDataBase->MakeConsistent( NULL ) )
1771	printf( "Konsistent" );
1772else
1773	printf( "Inkonsistent" );
1774Aga
1775Die Ausgabe ist 'Inkonsistent', weil in der Datenbasis zwei String-Instanzen mit dem Identifier 1000
1776existieren.
1777Aga���������������������������������������������������������
1778Aga
1779Au0RscDataBase::GetFileTab()
1780Aga
1781AliRscFileTab  * RscDataBase::GetFileTab();
1782Aga
1783Af1Beschreibung
1784Aga
1785Die interne Struktur der Makro- und Dateiverwaltung wird zur�ckgeliefert.
1786
1787Af1Return-Werte
1788Aga
1789Es wird ein Zeiger auf die Struktur der Projektverwaltung zur�ckgeliefert.
1790Aga
1791Af1Querverweise
1792Aga
1793Klassen: RscFileTab.
1794Aga
1795Aga���������������������������������������������������������
1796Aga
1797Au0RscDataBase::GetFileStruct()
1798Aga
1799AliRscFile * RscDataBase::GetFileStruct( ULONG lFileKey );
1800Aga
1801Af1Beschreibung
1802Aga
1803Auf die interne Darstellung der Daten einer Datei wird �ber einen Schl�ssel zugegriffen. Mit Hilfe
1804dieses Schl�ssels kann man einen Zeiger auf die interne Datenstruktur bekommen.
1805
1806Af1Parameter
1807Aga
1808AfplFileKey	Schl�ssel der Datei.
1809Aga
1810Af1Return-Werte
1811Aga
1812Zeiger auf interne Struktur.
1813Aga
1814Af1Querverweise
1815Aga
1816Klassen:  RscFile, RscFileTab.
1817Methoden: GetKey().
1818Aga
1819Aga���������������������������������������������������������
1820Aga
1821Au0RscDataBase::GetPathList()
1822Aga
1823AliRscStrList * RscDataBase::GetPathList();
1824Aga
1825Af1Beschreibung
1826Aga
1827Diese Methode gibt einen Zeiger auf eine Liste mit Pfadnamen zur�ck. Diese Liste kann ver�ndert
1828werden. Die �nderungen wirken sich sofort auf den Suchpfad aus.
1829
1830Af1Return-Werte
1831Aga
1832Es wird die PfadListe zur�ckgeliefert.
1833
1834Af1Beispiel
1835Aga//veraendern der Pfadliste
1836
1837AliRscDataBase aBase( ... ); //Datenbasis
1838
1839// Pfadliste holen
1840RscStrList * pPathLst = aBase.GetPathList();
1841//Pfad hinzufuegen
1842pPathList->Insert( String( "c:\demo\resource" ) );
1843Aga
1844Aga���������������������������������������������������������
1845Au0
1846Au0RscDataBase::AddSrcFile()
1847Aga
1848AliULONG RscDataBase::AddSrcFile( const String & rName );
1849Aga
1850Af1Beschreibung
1851Aga
1852Diese Methode stellt eine Src-Datei in die Projektverwaltung.
1853
1854Af1Parameter
1855Aga
1856AfprName	Dies ist der Name der Datei.
1857Aga
1858Af1Return-Werte
1859Aga
1860Es wird der Schl�ssel der Datei zur�ckgeliefert.
1861Aga
1862Af1Anmerkungen
1863Aga
1864Wenn es eine Datei unter diesem Namen gibt, dann wird der Schl�ssel dieser Datei zur�ckgegeben.
1865
1866Af1Querverweise
1867Aga
1868Klassen:  RscFileTab.
1869
1870Aga��������������������������������������������������������
1871Aga
1872Au0RscDataBase::AddHrcFile()
1873Aga
1874AliULONG RscDataBase::AddHrcFile( const String & rName );
1875Aga
1876Af1Beschreibung
1877Aga
1878Diese Methode stellt eine Hrc-Datei in die Projektverwaltung.
1879
1880Af1Parameter
1881Aga
1882AfprName	Dies ist der Name der Datei.
1883Aga
1884Af1Return-Werte
1885Aga
1886Es wird der Schl�ssel der Datei zur�ckgeliefert.
1887Aga
1888Af1Anmerkungen
1889Aga
1890Wenn es eine Datei unter diesem Namen gibt, dann wird der Schl�ssel dieser Datei zur�ckgegeben.
1891
1892Af1Querverweise
1893Aga
1894Klassen:  RscFileTab.
1895
1896Aga���������������������������������������������������������
1897
1898Au0RscDataBase::ScanForIncFiles()
1899Aga
1900Alivoid RscDataBase::ScanForIncFiles( ULONG lFileKey );
1901Aga
1902Af1Beschreibung
1903Aga
1904Diese Methode durchsucht die Datei nach Include-Anweisungen. Die Dateien werden in die
1905Abh�ngigkeitsliste von der Datei mit dem Schl�ssel lFileKey eingetragen. Die Dateien werden in die
1906Projektverwaltung gestellt.
1907
1908Af1Anmerkungen
1909Aga
1910Kann die Datei nicht ge�ffnet werden dann wird die Abh�ngigkeitsliste nicht ge�ndert.
1911Preprozessoranweisungen wie #ifdef... werden nicht beachtet. C- und C++-Kommentare werden
1912beachtet.
1913
1914Af1Querverweise
1915Aga
1916Klassen:  RscCompiler.
1917Methoden: RscCompiler::IncludeParser().
1918Aga
1919Aga���������������������������������������������������������
1920
1921Au0RscDataBase::RemoveFile()
1922Aga
1923Alivoid RscDataBase::RemoveFile( ULONG lFileKey );
1924Aga
1925Af1Beschreibung
1926Aga
1927Die Datei wird aus der Projektverwaltung gel�scht. Alle dieser Datei zugeordneten Makros und
1928Resource-Instanzen werden gel�scht. Alle Verweise auf diese Datei werden gel�scht.
1929
1930Af1Parameter
1931Aga
1932AfplFileKey	Schl�ssel der Datei.
1933Aga
1934Af1Anmerkungen
1935Aga
1936Diese Datei wird auch aus den Abh�ngigkeitslisten der anderen Dateien gel�scht. Wenn
1937Abh�ngigkeiten auf Makros bestehen, dann werden sie durch Zahlen ersetzt.
1938
1939Af1Querverweise
1940Aga
1941Klassen:  RscFile, RscFileTab.
1942Methoden: RscTypCont::WriteSrc().
1943
1944Aga���������������������������������������������������������
1945Aga
1946Au0RscDataBase::FindDef()
1947Aga
1948AliRscDefine * RscDataBase::FindDef( const String & rName );
1949Aga
1950Af1Beschreibung
1951Aga
1952Mit dieser Methode kann ein Makro �ber seinen Namen gefunden werden.
1953
1954Af1Parameter
1955Aga
1956AfprName	ist der Name des Makros.
1957Aga
1958Af1Return-Werte
1959Aga
1960Es wird ein Zeiger auf das Makro mit Namen rName zur�ckgegeben.
1961AfpNULL	Es wurde kein Makro gefunden.
1962Aga
1963Af1Querverweise
1964Aga
1965Klassen: RscFileTab.
1966
1967Aga���������������������������������������������������������
1968Aga
1969Au0RscDataBase::GetFileKey()
1970Aga
1971AliULONG RscDataBase::GetFileKey( const String & rFileName );
1972Aga
1973Af1Beschreibung
1974Aga
1975Diese Methode sucht in der Projektverwaltung nach einem Datei mit Namen "rFileName".
1976Wenn eine Datei unter diesem Namen in der Projektverwaltung steht wird der Schl�ssel dieser Datei
1977zur�ckgegeben.
1978
1979Af1Parameter
1980Aga
1981AfprFileKey	Der Dateiname nach dem gesucht wird.
1982Aga
1983Af1Return-Werte
1984Aga
1985Es wird die Schl�ssel der Datei zur�ckgeliefert.
1986AfpNOFILE_INDEX	dieser Wert zeigt an, da� der Dateiname nicht gefunden wurde.
1987Aga
1988Af1Anmerkungen
1989Aga
1990Gro�-und Kleinschreibung wird bei der Suche beachtet.
1991
1992Af1Querverweise
1993Aga
1994Klassen: RscFileTab.
1995
1996Aga���������������������������������������������������������
1997Aga
1998Au0PARscHrc
1999Aga
2000Aliclass RscHrc {
2001protected:
2002    ULONG lFileKey;//Schluessel der Datei
2003public:
2004                   RscHrc( RscDataBase *, ULONG lKey );
2005                   ~RscHrc();
2006    ERRTYPE        ReadFile();
2007    ULONG          GetFileKey();
2008    void           SetDirty();
2009    BOOL           IsDirty();
2010    void           SetPathName( const String & );
2011    String         GetPathName();
2012    void           SetFileName( const String & );
2013    String         GetPathName();
2014    void           InsertDepend( ULONG lKey, ULONG lPos );
2015    RscDefineList * GetDefineList();
2016    RscDefine *    FindDef( const String & );
2017    ERRTYPE        NewDef( const String & rName,
2018                           long lValue, ULONG lPos );
2019    ERRTYPE        NewDef( const String & rName,
2020                           const String & rMacro,
2021                           ULONG lPos );
2022    ERRTYPE        ChangeDef( const String & rName,
2023                              long lValue );
2024    ERRTYPE        ChangeDef( const String & rName,
2025                              const String & rMacro );
2026    BOOL           IsDefUsed( const String & rName );
2027    void           DeleteDef( const String & rName );
2028    ERRTYPE        ChangeDefName( const String & rName,
2029                                const String & rNewName );
2030
2031    RscFile *      GetFileStruct();
2032    RscDependList * GetDependList();
2033    ERRTYPE        WriteFile();
2034};
2035Aga
2036Af1Beschreibung
2037AgaDiese Klasse enth�lt nur eine Referenz auf eine andere Klasse. Alle Operation werden also auf der
2038referenzierten Klasse durchgef�hrt. Diese Klasse ist nur eine Schnittstelle. Diese Klasse stellt eine
2039Sicht auf eine hrc-Datei dar.
2040
2041Diese Klasse l�st folgende Aufgaben:
2042	1. Das Verwalten der Abh�ngigkeitsliste einer Datei.
2043	2. Das Verwalten der Makros in dieser Datei.
2044	3. Das Schreiben von ".hrc"-Dateien.
2045
2046Af1Querverweise
2047Aga
2048Klassen:  RscTypCont, RscDependList, RscDefList, RscError, RscId.
2049
2050Au0PARscHrc::RscHrc()
2051Aga
2052AliRscHrc::RscHrc( RscDataBase * pDataBase, ULONG lKey );
2053Aga
2054Af1Beschreibung
2055Aga
2056Diese Methode erzeugt eine Instanz der Klasse RscHrc. Der Scope von dieser Instanz mu� innerhalb
2057des Scopes von pDataBase liegen.
2058
2059Af1Parameter
2060Aga
2061AfppDataBase	Ein Zeiger auf eine Datenbasis.
2062lKey	Ist der Schl�ssel einer Datei.
2063Aga
2064Af1Querverweise
2065Aga
2066Klassen RscError, RscSrc, RscFileTab.
2067
2068Af1Beispiel
2069Aga
2070Ali.....
2071/* aSrc ist ein bestehende Instanz der Klasse RscSrc */
2072//Abhaengigkeitsliste holen
2073RscDependList * pDepLst = aSrc.GetDependList();
2074//Erstes Element holen
2075RscDepend * pDep = pDepList->First();
2076//Hrc-Instanz erzeugen, aHrc ist die Repraesentation der
2077//ersten Datei in der Abhaengigkeitsliste
2078RscHrc	aHrc( pDataBase, pDep->GetFilekey() );
2079.....
2080Aga
2081Aga���������������������������������������������������������
2082Au0RscHrc::~RscHrc()
2083Aga
2084AliRscHrc::~RscHrc();
2085Aga
2086Af1Beschreibung
2087Aga
2088Der Destruktor hat keine Funktion.
2089
2090Aga���������������������������������������������������������
2091Aga
2092Au0RscHrc::ReadFile()
2093Aga
2094AliERRTYPE RscHrc::ReadFile();
2095Aga
2096Af1Beschreibung
2097Aga
2098Es wird eine Datei eingelesen. Es wird in der Abh�ngigkeitsliste �berpr�ft ob alle Dateien geladen
2099sind, sind sie nicht geladen, werden sie zuerst eingelesen. Tritt ein fehler auf, wurde die Fehlerhafte
2100Datei nicht eingelesen. Der Fehler innerhalb der Datei mu� mit einem Editor verbessert werden (siehe
2101Rsc-Compiler Benutzerhandbuch).
2102
2103Af1Return-Werte
2104Aga
2105AfpERRTYPE.IsOk()	Es ist kein Fehler aufgetreten.
2106AfpERR_OPENFILE	Die Datei konnte nicht g�ffnet werden.
2107anderer Wert	Siehe Klasse RscError.
2108Aga
2109Af1Anmerkungen
2110Aga
2111Es sollte sichergestellt sein, da� die Datei mit dem Rsc-Compiler ohne Preprozessor �bersetzt werden
2112kann. Es k�nnen aber trotzdem Fehler auftreten wie zum Beispiel Identifierkonflikte mit vorher
2113eingelesener Datei, oder die Include-Dateien wurden vorher nicht eingelesen (#define kann nicht
2114aufgel�st werden).
2115
2116Af1Querverweise
2117Aga
2118Klassen: RscError, RscCompiler.
2119
2120Aga���������������������������������������������������������
2121
2122Au0RscHrc::GetFileKey()
2123Aga
2124AliULONG RscHrc::GetFileKey();
2125Aga
2126Af1Return-Werte
2127Aga
2128Liefert den Schl�ssel der Datei zur�ck.
2129Aga
2130Aga���������������������������������������������������������
2131Aga
2132Au0RscHrc::SetDirty()
2133Aga
2134Alivoid RscHrc::SetDirty( BOOL bSet );
2135Aga
2136Af1Beschreibung
2137Aga
2138Es wird das Attribut Dirty gesetzt. Das Attribut Dirty bewirkt nichts.
2139
2140Af1Parameter
2141Aga
2142AfpbSet	Ist der Wert auf den das Attribut gesetzt werden soll.
2143Aga
2144Af1Querverweise
2145Aga
2146Methoden: IsDirty().
2147
2148Aga���������������������������������������������������������
2149Aga
2150Au0RscHrc::IsDirty()
2151Aga
2152AliBOOL RscHrc::IsDirty();
2153Aga
2154Af1Beschreibung
2155Aga
2156Gibt an ob das Attribut Dirty gesetzt ist.
2157
2158Af1Return-Werte
2159Aga
2160AfpTRUE	Dirty ist gesetzt.
2161FALSE	Dirty ist nicht gesetzt.
2162Aga
2163Aga���������������������������������������������������������
2164Au0RscHrc::SetPathName()
2165Aga
2166Alivoid RscHrc::SetPathName( const String & rPath );
2167Aga
2168Af1Beschreibung
2169Aga
2170Der Pfadname der Datei, die durch diese Instanz repr�sentiert wird, wird ge�ndert. Der Pfadname ist
2171der Name, unter dem die Datei gespeichert wird.
2172
2173Af1Parameter
2174Aga
2175AfprPath	Der Pfadname der Datei.
2176Aga
2177Af1Querverweise
2178Aga
2179Klassen:  RscFile.
2180Methoden: GetPathname(), SetFileName(), GetFileName()
2181
2182Aga���������������������������������������������������������
2183Aga
2184Au0RscHrc::GetPathName()
2185Aga
2186AliString RscHrc::GetPathName();
2187Aga
2188Af1Return-Werte
2189Aga
2190Der Pfadname der Datei wird zur�ckgeliefert.
2191Aga
2192Af1Querverweise
2193Aga
2194Klassen:  RscFile.
2195Methoden: SetPathName(), SetFileName(), GetFileName().
2196
2197Aga���������������������������������������������������������
2198Aga
2199Au0RscHrc::SetFileName()
2200Aga
2201Alivoid RscHrc::SetFileName( const String & rPath );
2202Aga
2203Af1Beschreibung
2204Aga
2205Der Name der Datei, die durch diese Instanz repr�sentiert wird, wird ge�ndert. Unter diesem Namen
2206wird die Datei zum Beispiel in den "#include <Name>" Anweisungen verwendet.
2207
2208Af1Parameter
2209Aga
2210AfprPath	Der Name der Datei.
2211Aga
2212Af1Querverweise
2213Aga
2214Klassen:  RscFile.
2215Methoden: SetPathName(), GetPathname(), GetFileName()
2216
2217Aga���������������������������������������������������������
2218Aga
2219Au0RscHrc::GetFileName()
2220Aga
2221AliString RscHrc::GetFileName();
2222Aga
2223Af1Return-Werte
2224Aga
2225Der Name der Datei wird zur�ckgeliefert.
2226Aga
2227Af1Querverweise
2228Aga
2229Klassen:  RscFile.
2230Methoden: SetPathName(), GetPathName(), SetFileName().
2231
2232Aga���������������������������������������������������������
2233Aga
2234Aga
2235Au0RscHrc::InsertDepend()
2236Aga
2237Alivoid RscHrc::InsertDepend( ULONG lFileKey, ULONG lPos );
2238Aga
2239Af1Beschreibung
2240Aga
2241Eine neue Include-Datei wird in die Abh�ngigkeitsliste eingef�gt.
2242
2243Af1Parameter
2244Aga
2245AfplFileKey	Dies ist der Schl�ssel der Include-Datei.
2246lPos	An dieser Position wird der Schl�ssel in die Abh�ngigkeitsliste
2247"eingef�gt.
2248Aga
2249Af1Return-Werte
2250Aga
2251Es wird der Schl�ssel der Datei zur�ckgeliefert.
2252
2253Af1Anmerkungen
2254Aga
2255Wenn eine Include-Datei unter diesem Schl�ssel schon in der Abh�ngigkeitsliste steht, wird er nicht
2256noch einmal eingetragen.
2257
2258Af1Querverweise
2259Aga
2260Klassen:  RscFile.
2261Methoden: FillIncList().
2262
2263Aga���������������������������������������������������������
2264Aga
2265Au0RscHrc::GetDefineList()
2266Aga
2267AliRscDefineList * RscHrc::GetDefineList();
2268Aga
2269Af1Beschreibung
2270Aga
2271In jeder Hrc-Datei gibt es Makros. Diese Makros werden in eine RscDefineList gestellt.
2272
2273Af1Return-Werte
2274Aga
2275Es wird ein Zeiger auf die Makro-Liste zur�ckgeliefert.
2276
2277Af1Querverweise
2278Aga
2279Klassen:  RscDefineList.
2280
2281Aga���������������������������������������������������������
2282Aga
2283Au0RscHrc::FindDef()
2284Aga
2285AliRscDefine * RscHrc::FindDef( const String & rName );
2286Aga
2287Beschreibung
2288Aga
2289Mit dieser Methode kann ein Makro �ber seinen Namen gefunden werden. Es wird nur in dieser Datei
2290oder in den Dateien gesucht, von denen diese Datei abh�ngt.
2291
2292Af1Parameter
2293Aga
2294AfprName	ist der Name des Makros.
2295Aga
2296Af1Return-Werte
2297Aga
2298Es wird ein Zeiger auf das Makro mit Namen rName zur�ckgegeben.
2299AfpNULL	Es wurde kein Makro gefunden.
2300Aga
2301Af1Querverweise
2302Aga
2303Klassen: RscFileTab.
2304
2305Af1Beispiel
2306Aga
2307Ali//Dateiname = t.src
2308...
2309#include <t1.hrc>
2310#include <t2.hrc>
2311
2312#define TEST 1
2313Aga
2314Wenn aHrc2 die Datei t2.hrc repr�sentiert, dann werden die Makros in t2.hrc und t1.hrc gesucht. Sie
2315werden nicht in t.src gesucht.
2316
2317Aga���������������������������������������������������������
2318Aga
2319Au0RscHrc::NewDef()
2320Aga
2321AliERRTYPE RscHrc::NewDef( const String & rName,
2322                        long lValue, ULONG lPos );
2323ERRTYPE RscHrc::NewDef( const String & rName,
2324                        const String & rMacro,
2325                        ULONG lPos );
2326Aga
2327Af1Beschreibung
2328Aga
2329Mit dieser Methode k�nnen neue Makros angelegt werden. Die Makros werden der Datei zugeordnet,
2330die durch diese Instanz repr�sentiert wird.
2331
2332Af1Parameter
2333Aga
2334AfprName	Ist der Name des neuen Makros.
2335lValue	Ist der Wert des neuen Makros.
2336rMacro	Ist ein String der ausgewertet wird.
2337lPos	gibt die Position an, an welcher das Makro eingef�gt werden soll.
2338Aga
2339Af1Return-Werte
2340Aga
2341In ERRTYPE steht, ob ein Fehler aufgetreten ist und um welchen es sich handelt.
2342
2343Af1Anmerkungen
2344Aga
2345Durch rMacro k�nnen Makros auch wieder durch Makros erkl�rt werden. Es wird sichergestellt, da�
2346nur Makros verwendet werden, die vorher deklariert wurden. Ob sie vorher deklariert wurden, wird
2347anhand der Abh�ngigkeitslisten entschieden.
2348
2349Af1Querverweise
2350Aga
2351Klassen:  RscFileTab.
2352Methoden: ::MacroParser().
2353
2354Af1Beispiel
2355Aga
2356Ali//Datei demo.hrc in Projektverwaltung
2357lFileKey = pBase->AddHrcFile( "demo.hrc" );
2358//Sicht auf demo.hrc
2359RscHrc	aHrc( pBase, lFileKey );
2360//Makro erzeugen
2361aHrc.NewDef( String( "BASE" ), 1000 );
2362//Makro erzeugen
2363aHrc.NewDef( String( "DEF_TEST" ), String( "1000 + 2" ) );
2364//Makro erzeugen
2365aHrc.NewDef( String( "MENU_FILE" ),String( "BASE + 100" ));
2366Aga
2367Aga���������������������������������������������������������
2368Aga
2369Au0RscHrc::ChangeDef()
2370Aga
2371AliERRTYPE RscHrc::ChangeDef( const String & rName,
2372                           const String & rMacro );
2373ERRTYPE RscHrc::ChangeDef( const String & rName,
2374                           long lValue );
2375Aga
2376Af1Beschreibung
2377Aga
2378Mit dieser Methode k�nnen Makros ge�ndert werden.
2379
2380Af1Parameter
2381Aga
2382AfprName	Ist der Name des neuen Makros.
2383rMacro	Ist ein String der ausgewertet wird.
2384lValue	Ist der Wert des ge�nderten Makros.
2385Aga
2386Af1Return-Werte
2387Aga
2388In ERRTYPE steht, ob ein Fehler aufgetreten ist und um welchen es sich handelt.
2389
2390Af1Anmerkungen
2391Aga
2392Durch rMacro k�nnen Makros auch wieder durch Makros erkl�rt werden. Es wird sichergestellt, da�
2393nur Makros verwendet werden, die vorher deklariert wurden. Ob sie vorher deklariert wurden, wird
2394anhand der Abh�ngigkeitslisten entschieden.
2395
2396Af1Querverweise
2397Aga
2398Klassen:  RscFileTab.
2399Methoden: ::MacroParser(), NewDef().
2400
2401Af1Beispiel
2402Aga
2403Ali//Datei demo.hrc in Projektverwaltung
2404lFileKey = pBase->AddHrcFile( "demo.hrc" );
2405//Sicht auf demo.hrc
2406RscHrc	aHrc( pBase, lFileKey );
2407//Makro erzeugen
2408aHrc.NewDef( String( "BASE" ), 1000 );
2409//Makro erzeugen
2410aHrc.NewDef( String( "DEF_TEST" ), String( "1000 + 2" ) );
2411//Makro aendern
2412aHrc.ChangeDef( String( "DEF_TEST" ),
2413                String( "BASE + 100" ) );
2414Aga
2415Aga���������������������������������������������������������
2416Aga
2417Au0RscHrc::IsDefUsed()
2418Aga
2419AliBOOL RscHrc::IsDefUsed( const String & rName );
2420Aga
2421Af1Beschreibung
2422Aga
2423Mit dieser Methode kann festgestellt werden ob ein Makro noch ben�tigt wird. Es wird ben�tigt, wenn
2424Referenzen bestehen, z.B. das Makro wird zur Definition von anderen Makros verwendet.
2425
2426Af1Parameter
2427Aga
2428AfprName	Ist der Name des Makros.
2429Aga
2430Af1Return-Werte
2431Aga
2432AfpTRUE	Das Makro wird noch ben�tigt.
2433FALSE	Das Makro wird nicht mehr ben�tigt.
2434Aga
2435Af1Querverweise
2436Aga
2437Klassen: RscFileTab.
2438
2439Aga���������������������������������������������������������
2440
2441Au0RscHrc::DeleteDef()
2442Aga
2443Alivoid RscHrc::DeleteDef( const String & rName );
2444Aga
2445Af1Beschreibung
2446Aga
2447Das Makro mit dem Namen rName wird gel�scht.
2448
2449Af1Parameter
2450Aga
2451AfprName	Ist der Name des Makros.
2452Aga
2453Af1Querverweise
2454Aga
2455Klassen: RscFileTab.
2456
2457Aga��������������������������������������������������������
2458Aga
2459Au0RscHrc::ChangeDefName()
2460Aga
2461AliERRTYPE RscHrc::ChangeDefName( const String & rName,
2462                               const String & rNewName );
2463Aga
2464Af1Beschreibung
2465Aga
2466Der Name des Makros wird umbenannt. Existiert der neue Name schon, oder ist der neue Name ein
2467reserviertes Wort, wird ein Fehler zur�ckgeliefert.
2468
2469Af1Parameter
2470Aga
2471AfprName	Der Name des Makros.
2472rNewName	Der neue Name des Makros.
2473Aga
2474Af1Return-Werte
2475Aga
2476In ERRTYPE steht, ob ein Fehler aufgetreten ist und um welchen es sich handelt.
2477
2478Af1Anmerkungen
2479Aga
2480Alle Objekte oder Makros, die das umbenannte Makro benutzen, enthalten den neuen Namen.
2481
2482Af1Querverweise
2483Aga
2484Klassen: RscFileTab.
2485
2486Aga���������������������������������������������������������
2487
2488Au0RscHrc::GetFileStruct()
2489Aga
2490AliRscFile * RscHrc::GetFileStruct();
2491Aga
2492Af1Return-Werte
2493Aga
2494Liefert einen Zeiger auf die interne Datenstruktur..
2495
2496Af1Querverweise
2497Aga
2498Klassen:  RscFile, RscFileTab.
2499Aga
2500Aga���������������������������������������������������������
2501
2502Au0RscHrc::GetDependList()
2503Aga
2504AliRscDependList * RscHrc::GetDependList();
2505Aga
2506Af1Beschreibung
2507Aga
2508Mit dieser Methode bekommt man die Abh�ngigkeitsliste der Datei.
2509
2510Af1Return-Werte
2511Aga
2512Die Methode liefert einen Zeiger auf die Abh�ngigkeitsliste zur�ck.
2513Aga
2514Af1Anmerkungen
2515Aga
2516Die Datei ist selbst als letztes Element in der Liste vermerkt.
2517
2518Af1Querverweise
2519Aga
2520Klassen: RscFile, RscFileTab.
2521
2522Aga���������������������������������������������������������
2523Aga
2524Au0RscHrc::WriteFile()
2525Aga
2526AliERRTYPE RscHrc::WriteFile();
2527Aga
2528Af1Beschreibung
2529Aga
2530Diese Methode schreibt eine Datei im src-Format. Alle Resourceinstanzen die zu dieser Datei geh�ren
2531werden geschrieben. Es werden auch alle zugeh�rigen Makros geschrieben. Ein Datei ohne
2532Resourceinstanzen ist eine hrc-Datei. Der Name unter dem die Datei geschrieben wird ist der
2533Pfadname.
2534
2535Aga
2536Af1Return-Werte
2537Aga
2538AfpERRTYPE.IsOk()	Die Daten wurden in die entsprechende Datei geschrieben.
2539Afpanderer Wert	Es ist ein Fehler aufgetreten. Die angegebene Datei wurde
2540"eventuell unvollst�ndig geschrieben.
2541Aga
2542Af1Querverweise
2543Aga
2544Klassen:  RscTypCont.
2545Methoden: RscTypCont::WriteSrc(), RscDefineList::WriteAll(), SetPathName().
2546
2547Aga���������������������������������������������������������
2548Au0PARscSrc
2549Aga
2550Aliclass RscSrc {
2551public:
2552            RscSrc( RscDataBase * pDataBase, ULONG lKey );
2553            ~RscSrc();
2554    RscInstCopy CreateRscInst( RscTop * pClass );
2555    ERRTYPE DeleteRscInst( RscTop * pTypeClass,
2556                           RscId & rName );
2557    ERRTYPE SetRscInst( RscId & rInstName, RscInstCopy & );
2558    RscInst GetRscInst( RscTop * pClass, RscId & rInst );
2559    void    FillNameIdList( REResourceList * pList );
2560    ERRTYPE WriteCxxFile( const String &,
2561                          const String & rHxxFile );
2562    ERRTYPE WriteHxxFile( const String & );
2563};
2564Aga
2565Af1Beschreibung
2566Aga
2567Diese Klasse l�st folgende Aufgaben:
2568	1. Das Einlesen der Include-Dateien und der ".src"-Datei mit Erstellung der Datenbasis.
2569	2. Das Erzeugen von Resourceinstanzen.
2570	3. Das Finden und Herausgeben von Resourceinstanzen.
2571	4. Das Einsetzen von Resourceinstanzen.
2572	5. Das Schreiben von ".cxx"- und ".hxx"-Dateien.
2573
2574Af1Anmerkungen
2575Aga
2576Die von einer Instanz dieser Klasse herausgegebenen Resourceinstanzen sind von der Verwendeten
2577Datenbasis abh�ngig, das hei�t bevor die Datenbasis gel�scht wird, m�ssen alle Resourceinstanzen
2578gel�scht oder wieder eingesetzt worden sein.
2579
2580Af1Querverweise
2581Aga
2582Klassen:  RscTypCont, RscError, RscId, RscDataBase.
2583Methoden: HashId, GetHashString.
2584
2585Af1Beispiel
2586Aga
2587Auszug aus der test.src Datei.
2588Ali.....
2589Color 1000 {
2590	Red   = 0;     //kein Rotanteil
2591	Green = 65535;
2592	Blue  = 65535;
2593};
2594.....
2595
2596AgaAuszug aus der ".cxx" Datei.
2597Ali.....
2598// Compilers initialisieren
2599InitRscCompiler();
2600.....
2601RscError	aErrorHandle;              // Fehlerbehandlung
2602RscdataBase aBase( aErrorHandle );  // Datenbasis erzeugen
2603//src-Datei
2604RscSrc	aSrc( &aBase,
2605              aBase->AddSrcFile( "test.src" ) );
2606RscInst	aInst;                      // eine ResourceInstanz
2607RscTop*	pClassTyp;                  // ein Klassentyp
2608
2609// Einlesen der Resourcedatei test.src
2610aSrc.ReadFile();
2611// Typ einer Resource aus dem Namen erzeugen
2612pClassTyp = aBase.GetClassType( HashId( "Color" ) );
2613// Instanz holen
2614aInst = aSrc.GetRscInst( pClassTyp, RscId( 1000 ) );
2615// Instanz ver�ndern
2616aInst.SetNumber( HashId( "Red" ), 65535 );
2617// Da es sich bei aInst nur um eine Referenz in die
2618// Datenbasis handelt, werden die Aenderungen sofort
2619// uebernommen.
2620
2621// Ver�nderte test.src Datei schreiben
2622aSrc.WriteFile();
2623.....
2624
2625AgaAuszug aus der ver�nderten test.src Datei.
2626Alle Kommentare werden gel�scht. Bei Preprozessoranweisungen wie #include oder #define kommt
2627es zu Reihenfolge�nderungen.
2628
2629Ali.....
2630Color 1000 {
2631	Red   = 65535;
2632	Green = 65535;
2633	Blue  = 65535;
2634};
2635.....
2636Aga
2637
2638Au0PARscSrc::RscSrc()
2639Aga
2640AliRscSrc::RscSrc( RscDataBase * pDataBase,
2641                ULONG lFileKey );
2642Aga
2643Af1Beschreibung
2644Aga
2645Diese Methode erzeugt eine Instanz der Klasse RscSrc. Der Scope von dieser Instanz mu� innerhalb
2646des Scopes von pDataBase liegen.
2647
2648Af1Parameter
2649Aga
2650AfppDataBase	Ein Zeiger auf eine Datenbasis.
2651lFileKey	Der Schl�ssel einer Datei.
2652Aga
2653Af1Querverweise
2654Aga
2655Klasse: RscError
2656
2657Af1Beispiel
2658Aga
2659Ali.....
2660RscDataBase	aDataBase(...);
2661RscSrc	aCmpInst( &aDataBase,
2662                  aDataBase.AddSrcFile( "t.src" ) );
2663.....
2664Aga
2665Aga���������������������������������������������������������
2666Aga
2667Au0RscSrc::RscSrc()
2668Aga
2669AliRscSrc::~RscSrc();
2670Aga
2671Af1Beschreibung
2672Aga
2673Diese Methode hat keine Funktion.
2674
2675Aga���������������������������������������������������������
2676Aga
2677Au0RscSrc::CreateRscInst()
2678Aga
2679AliRscInstCopy RscSrc::CreateRscInst( RscTop * pClass );
2680Aga
2681Af1Beschreibung
2682Aga
2683Diese Methode erzeugt eine Instanz vom Typ pClass.
2684
2685Af1Parameter
2686Aga
2687AfppClass	ist der Typ der Resource, die erzeugt werden soll.
2688Aga
2689Af1Return-Werte
2690Aga
2691Es wird eine RscInstCopy Instanz zur�ckgeliefert.
2692
2693Af1Anmerkungen
2694Aga
2695Ist der Typ der Klasse nicht bekannt, dann wird eine ung�ltige RscInstCopy zur�ckgeliefert.
2696
2697Af1Querverweise
2698Aga
2699Klasse:   RscInst, RscInstCopy.
2700Methoden: RscInst::IsInst(), RscDataBase::GetClassType().
2701
2702Af1Beispiel
2703Aga
2704Ali.....
2705RscInstCopy  aColInst;
2706RscTop * pColorType =
2707    aBase.GetClassType( HashId( "Color" ) );
2708
2709// Resourceinstanz einer Farbe erzeugen
2710aColInst = aCmpInst.CreateRscInst( pColorType );
2711if( !aColInst.IsInst() )
2712    printf( "Farbinstanz konnte nicht erzeugt werden!" );
2713.....
2714Aga
2715Aga���������������������������������������������������������
2716
2717Au0RscSrc::DeleteRscInst()
2718Aga
2719AliERRTYPE RscSrc::DeleteRscInst( RscTop * pClass,
2720                               RscId & rInstName );
2721Aga
2722Af1Beschreibung
2723Aga
2724Diese Methode l�scht Resourceinstanz mit dem Namen rInstName aus der Datenbasis.
2725
2726Af1Parameter
2727Aga
2728AfppClass	ist der Typ der Resourceinstanz.
2729rInstName	ist der Identifier der Resourceinstanz, die gel�scht werden soll.
2730Aga
2731Af1Return-Werte
2732Aga
2733Zeigt an ob ein Fehler und welcher Fehler aufgetreten ist.
2734Aga
2735Af1Querverweise
2736Aga
2737Klasse: RscId, RscError.
2738
2739Aga
2740Aga���������������������������������������������������������
2741Aga
2742Au0RscSrc::SetRscInst()
2743Aga
2744AliERRTYPE RscSrc::SetRscInst( RscId & rInstName,
2745                            RscInstCopy & rInst );
2746Aga
2747Af1Beschreibung
2748Aga
2749Diese Methode setzt die Daten einer Instanz unter dem Namen rInstName in die Datenbasis ein. Ist
2750eine andere Instanz unter diesem Namen gespeichert, wird sie gel�scht.
2751
2752Af1Parameter
2753Aga
2754AfprInstName	Identifier der Instanz.
2755AfprInst	Die Daten aus dieser Instanz werden in die Datenbasis eingesetzt.
2756Aga
2757Af1Return-Werte
2758Aga
2759AfpERRTYPE.IsOk()	die Instanz wurde eingesetzt.
2760anderer Wert	Es ist ein Fehler aufgetreten.
2761Aga
2762Af1Anmerkungen
2763Aga
2764Die Identifikation einer Instanz erfolgt �ber den Typ und den Namen. Wird ein Fehler zur�ckgegeben,
2765dann wurde die Instanz nicht eingesetzt.
2766
2767Af1Querverweise
2768Aga
2769Klassen: RscInstCopy, RscId.
2770Methode: RscDataBase::DeleteRscInst(), GetRscInst().
2771
2772Af1Beispiel
2773Aga
2774Ali.....
2775RscId   aWindowName;// Identifier eines Fensters
2776RscInst aWindow;    // Instanz eines Fensters
2777.....
2778//Instanz einsetzen und die Alte l�schen, falls vorhanden
2779aCmpInst.SetRscInst( aWindowName, aWindow );
2780Aga
2781Aga���������������������������������������������������������
2782Aga
2783Au0RscSrc::GetRscInst()
2784Aga
2785AliRscInst RscSrc::GetRscInst( RscTop * pClass,
2786                            RscId & rInstName );
2787Aga
2788Af1Beschreibung
2789Aga
2790Diese Methode holt eine RscInst Instanz aus der Datenbasis.
2791
2792Af1Parameter
2793Aga
2794AfppClass	der Typ der Instanz.
2795AfprInstName	der Identifier der Instanz.
2796Aga
2797Af1Return-Werte
2798Aga
2799Es wird eine RscInst Intanz zur�ckgeliefert.
2800
2801Af1Anmerkungen
2802Aga
2803Wenn unter dem Typ und Namen keine Instanz zu finden ist, dann ist die zur�ckgelieferte Instanz
2804ung�ltig.
2805
2806Af1Querverweise
2807Aga
2808Klassen: RscInst, RscId.
2809
2810Af1Beispiel
2811Aga
2812AliRscId    aWindowName;// Identifier eines Fensters
2813RscInst  aWindow;    // Instanz eines Fensters
2814RscTop * pClassType;
2815.....
2816// Klassentyp holen
2817pClassType = aBase.GetClassType( HashId( "Window" ) );
2818// Instanz holen
2819aWindow = aCmpInst.GetRscInst( aWindowName, pClassType ) );
2820// Instanz gefunden
2821if( aWindow.IsInst() )
2822    printf( "Instanz gefunden!" );
2823....
2824Aga
2825Aga���������������������������������������������������������
2826Aga
2827Au0RscSrc::FillNameIdList()
2828Aga
2829Alivoid RscSrc::FillNameIdList( REResourceList * pList );
2830Aga
2831Af1Beschreibung
2832Aga
2833F�llt eine Liste mit den Namen und Typen von Resourceinstanzen, die in der Datenbasis stehen.
2834
2835Af1Parameter
2836Aga
2837AfppList	Dies ist die Liste, die gef�llt wird.
2838Aga
2839Af1Anmerkungen
2840Aga
2841pList ist eine Liste von Listen. Resourceinstanzen k�nnen beliebige weitere Resourceinstanzen
2842beinhalten. Die Liste spiegelt diese Verschachtelung wieder.
2843
2844Af1Querverweise
2845Aga
2846Klasse: REResourceList.
2847
2848Af1Beispiel
2849Aga
2850Ali// Resourcedatei
2851Window 1000 {
2852    .....
2853    PushButton 1 { ..... };
2854    String     1 { ..... };
2855    String     2 { ..... };
2856};
2857AliWindow 1001 { ..... };
2858WorkWindow 1000 {
2859    .....
2860    String    1 { ..... };
2861};
2862AgaEine von diesen Resourcen erzeugte Liste h�tte folgende Struktur:
2863Window 1000
2864	PushButton 1
2865	String 1
2866	String 2
2867Window 1001
2868WorkWindow 1000
2869	String 1
2870Aga���������������������������������������������������������
2871
2872Au0RscSrc::Write...File()
2873Aga
2874AliERRTYPE RscSrc::WriteCxxFile( const String & rFileName
2875                              const String & rHxxName );
2876ERRTYPE RscSrc::WriteHxxFile( const String & rFileName );
2877Aga
2878Af1Beschreibung
2879Aga
2880Diese Methoden schreiben ein entsprechendes Format, der in der Datenbasis stehenden
2881Resourceinstanzen, in die Dateien. WriteHxxFile schreibt die Include-Datei f�r die ".cxx"-Dateien.
2882
2883Af1Parameter
2884Aga
2885AfprFileName	Dies ist der Name der Datei in die das entsprechende Format
2886"geschrieben werden soll.
2887rHxxName	Dies ist der Name "hxx"-Datei, die von der "cxx"-Datei eingef�gt
2888"wird.
2889Aga
2890Af1Return-Werte
2891Aga
2892AfpERRTYPE.IsOk()	Das Format wurde in die entsprechende Datei geschrieben.
2893Afpanderer Wert	Es ist ein Fehler aufgetreten. Die angegebene Datei wurde
2894"eventuell unvollst�ndig geschrieben.
2895Aga
2896Aga���������������������������������������������������������
2897Au0PARscInst
2898Aga
2899Aliclass RscInst {
2900public:
2901    RSCINST   aInst;
2902              RscInst();
2903              RscInst( const RscInst & rInst );
2904              RscInst( RSCINST aTmpI );
2905    RscInst&  operator =  ( const RscInst& rRscInst );
2906              ~RscInst();
2907    void      OverWrite( RscInstCopy & rInst );
2908    BOOL      IsInst();
2909              // Listen Methoden
2910    ERRTYPE   SetElement( const RscId & rName,
2911                          RscInstCopy & rInst );
2912    ERRTYPE   SetPosEle( USHORT nPos,
2913                         RscInstCopy & rInst );
2914    ERRTYPE   SetPosRscId( USHORT nPos, const RscId & rId);
2915    SUBINFO_STRUCT  GetInfoEle( USHORT nPos );
2916    USHORT    GetCount();
2917    RscInst   GetElement( RscTop * pClass,
2918                          const RscId & rName );
2919    RscInst   GetPosEle( USHORT nPos );
2920    ERRTYPE   MovePosEle( USHORT nDestPos,
2921                          USHORT nSourcePos );
2922    ERRTYPE   DeleteElement( RscTop * pClass,
2923                             RscId & rName );
2924    ERRTYPE   DeletePosEle( USHORT nPos );
2925    ERRTYPE   SetVar( HASHID nVarName,
2926                      RscInstCopy & rInst );
2927    ERRTYPE   SetConst( HASHID nConstId );
2928    ERRTYPE   SetBool( BOOL bSet );
2929    ERRTYPE   SetNumber( long lValue );
2930    ERRTYPE   SetString( const char * pStr );
2931    ERRTYPE   SetRef( const RscId & rRscId );
2932    ERRTYPE   SetDefault( HASHID nVarName );
2933
2934    RscInst&  GetVar( HASHID nVarName );
2935    HASHID    GetConst();
2936    USHORT    GetConstPos();
2937    BOOL      GetBool();
2938    long      GetNumber();
2939    const char * GetString();
2940    RscId     GetRef();
2941    BOOL      IsDefault( HASHID nVarName );
2942    BOOL      IsConsistent( RscInconsList * pList );
2943
2944    HASHID    GetClassEnum( USHORT nPos );
2945    RscTop *  GetClassType();
2946    HASHID    GetClassName();
2947    ERRTYPE   WriteRc( RscWriteRc & aMem );
2948};
2949Aga
2950Af1Beschreibung
2951Aga
2952Diese Klasse stellt Methoden zur Verf�gung, mit denen Resourceinstanzen erzeugt, ver�ndern und
2953gel�scht werden k�nnen. Das Erzeugen von Instanzen erfolgt immer impliziet. Das hei�t beim
2954Anfordern einer Instanz wird sie erzeugt, wenn sie nicht vorhanden war.
2955
2956Af1Ausnahmen
2957Aga
2958Eine Ausname bildet die Methode GetPosEle, wenn an der angegebenen Stelle keine Instanz steht, so
2959wird eine ung�ltige Instanz zur�ckgeliefert.
2960
2961Af1Anmerkungen
2962Aga
2963Die Implementation ist nicht auf Geschwindigkeit und Speicherbedarf optimiert.
2964
2965Af1Querverweise
2966Aga
2967Klassen: RscDataBase, RscHrc, RscSrc, RSCINST, RscTop, RscId.
2968
2969Af1Beispiel
2970AgaDas Beispiel zeigt, wie der Wert einer Variablen ge�ndert wird
2971Ali.....
2972RscInst  aWindow;
2973RscInst  aBorder;
2974RscTop*  pWindowType;
2975
2976// Typ des Klasse Window
2977pWindowType = aDataBase.GetClassType( HashId( "Window" ) );
2978// Exemplar der Klasse Window erzeugen
2979aWindow = aCompilerInst.CreateRscInst( pWindowType );
2980// Exemplar mit Namen "Border" holen
2981aBorder = aWindow.GetVar( HashId( "Border" ) );
2982// Wert auf TRUE setzen
2983aBorder.SetBool( TRUE );
2984.....
2985Aga
2986Au0PARscInst::RscInst()
2987Aga
2988AliRscInst::RscInst();
2989RscInst::RscInst( const RscInst & rInst );
2990RscInst::RscInst( RSCINST aTmpI );
2991
2992Af1Beschreibung
2993Aga
2994Diese Instanz beinhaltet nur eine Referenz auf die Resourcedaten.
2995
2996Af1Parameter
2997Aga
2998AfprInst	ist die Instanz, aus der die Referenz �bernommen wird.
2999aTmpI	Aus dieser Instanz wird eine RscInst erzeugt.
3000
3001Af1Anmerkungen
3002Aga
3003RscInst hat zwei verschiedene Zust�nde die mit der Methode IsInst() abgefragt werden k�nnen. Liefert
3004IsInst() TRUE zur�ck, dann ist es eine g�ltige Instanz. Anderenfalls ist die Instanz ung�ltig und alle
3005Methoden liefern Fehler oder weitere ung�ltige Instanzen.
3006
3007Af1Querverweise
3008Aga
3009Klassen:  RSCINST, ERRTYPE.
3010Methoden: IsInst(), GetClassType().
3011
3012Aga���������������������������������������������������������
3013Aga
3014Au0RscInst::operator = ()
3015Aga
3016AliRscInst & RscInst::operator = ( const RscInst & rInst );
3017Aga
3018Af1Beschreibung
3019Aga
3020Es werden die Referenzen von rInst �bernommen.
3021
3022Af1Parameter
3023Aga
3024AfprInst	Intanz von dem die Referenzen �bernommen werden.
3025Aga
3026Af1Return-Werte
3027Aga
3028Es wird die eigene Instanz zur�ckgeliefert.
3029Aga
3030Aga���������������������������������������������������������
3031Aga
3032
3033Au0RscInst::~RscInst()
3034Aga
3035AliRscInst::~RscInst();
3036Aga
3037Af1Beschreibung
3038Aga
3039Im Destruktor passiert nichts.
3040
3041Aga���������������������������������������������������������
3042Aga
3043Au0RscInst::OverWrite()
3044Aga
3045Alivoid RscInst::OverWrite( RscInstCopy & rInst );
3046Aga
3047Af1Beschreibung
3048Aga
3049Die Daten in der Instanz werden mit den Daten in rInst �berschrieben.
3050
3051Af1Parameter
3052Aga
3053AfprInst	ist die Instanz, deren Daten eingesetzt werden.
3054Aga
3055Af1Anmerkungen
3056Aga
3057Stimmen die Typen nicht �berein, werden die Daten der gemeinsamen Oberklassen �bernommen. Die
3058anderen Daten werden auf Default gesetzt.
3059
3060Af1Querverweise
3061Aga
3062Klasse:  RscTop.
3063Methode: RscInstCopy::RscInstCopy(), RscTop::Create().
3064
3065Aga���������������������������������������������������������
3066Aga
3067Au0RscInst::IsInst()
3068Aga
3069AliBOOL RscInst::IsInst();
3070Aga
3071Af1Beschreibung
3072Aga
3073Zeigt an ob eine g�ltige Instanz vorligt.
3074
3075Af1Return-Werte
3076Aga
3077AfpTRUE	hei�t, es liegt eine g�ltige Instanz vor.
3078FALSE	hei�t, es liegt keine g�ltige Instanz vor.
3079Aga
3080Af1Querverweise
3081Aga
3082Klasse:  RSCINST
3083Methode: RSCINST::IsInst();
3084
3085Aga���������������������������������������������������������
3086Aga
3087Au0RscInst::SetElement()
3088Aga
3089AliERRTYPE RscInst::SetElement( const RscId & rName,
3090                             RscInstCopy & rInst);
3091Aga
3092Af1Beschreibung
3093Aga
3094Die Methode f�gt eine Resourceinstanz unter dem Namen rName ein.
3095
3096Af1Parameter
3097Aga
3098AfprInst	ist die Instanz die eingef�gt werden soll.
3099AfprName	ist der Identifier unter dem die Instanz eingef�gt wird.
3100Aga
3101Af1Return-Werte
3102Aga
3103AfpERRTYPE.IsOk()	bedeutet, die Instanz wurde Eingef�gt.
3104anderer Wert	bedeutet, da� ein Fehler aufgetreten ist.
3105Aga
3106Af1Anmerkungen
3107Aga
3108Wenn in der Liste unter diesem Namen und Typ schon eine Instanz steht, wird die Instanz gel�scht
3109und die neue Instanz wird an der gleichen Stelle eingef�gt. Wenn rName keine g�ltige Id enth�lt, wird
3110die Instanz am Ende angef�gt.
3111
3112Af1Querverweise
3113Aga
3114Klassen:  ERRTYPE, RscId, RSCINST.
3115Methoden: SetPosEle(), RscId::IsId().
3116
3117Aga���������������������������������������������������������
3118Aga
3119Au0RscInst::SetPosEle()
3120Aga
3121AliERRTYPE RscInst::SetPosEle( USHORT nPos,
3122                            RscInstCopy & rInst );
3123Aga
3124Af1Beschreibung
3125Aga
3126An der Position nPos wird eine Resourceinstanz durch rInst ersetzt.
3127
3128Af1Parameter
3129Aga
3130AfprInst	ist die Instanz die an die Position nPos gesetzt wird.
3131nPos	ist die Position an die die Instanz gesetzt wird.
3132Aga
3133Af1Return-Werte
3134Aga
3135AfpERRTYPE.IsOk()	bedeutet, die Instanz auf nPos wurde ersetzt.
3136andere Wert	bedeutet, die Instanz wurde nicht ersetzt.
3137Aga
3138Af1Anmerkungen
3139Aga
3140Wenn ein Fehler zur�ckgeliefert wird, so hei�t das meistens, da� an der Position nPos keine
3141Reourceinstanz steht.
3142
3143Af1Querverweise
3144Aga
3145Klassen:  ERRTYPE, RSCINST.
3146
3147Aga���������������������������������������������������������
3148Aga
3149Au0RscInst::SetPosRscId()
3150Aga
3151AliERRTYPE RscInst::SetPosRscId( USHORT nPos,
3152                              const RscId & rId );
3153Aga
3154Af1Beschreibung
3155Aga
3156An der Position nPos wird der Identifier durch rId ersetzt.
3157
3158Af1Parameter
3159Aga
3160AfprId	ist die Id die an die Position nPos gesetzt wird.
3161nPos	ist die Position, an die die Id gesetzt wird.
3162Aga
3163Af1Return-Werte
3164Aga
3165AfpERRTYPE.IsOk()	bedeutet, die Id auf nPos wurde ersetzt.
3166andere Wert	bedeutet, die Id wurde nicht ersetzt.
3167Aga
3168Af1Anmerkungen
3169Aga
3170Wenn ein Fehler zur�ckgeliefert wird, so hei�t das meistens, da� an der Position nPos keine
3171Reourceinstanz steht.
3172
3173Af1Querverweise
3174Aga
3175Klassen:  ERRTYPE, RSCINST.
3176
3177Aga���������������������������������������������������������
3178Aga
3179
3180Aga
3181Au0RscInst::GetInfoEle()
3182Aga
3183AliSUBINFO_STRUCT RscInst::GetInfoEle( USHORT nPos );
3184Aga
3185Af1Beschreibung
3186Aga
3187Es wird Information �ber die Resourceinstanz, die auf nPos steht, zur�ckgeliefert.
3188
3189Af1Parameter
3190Aga
3191AfpnPos	ist die Position der Resourceinstanz.
3192Aga
3193Af1Return-Werte
3194Aga
3195Die Information �ber die Resourceinstanz wird zur�ckgeliefert.
3196
3197Af1Anmerkungen
3198Aga
3199Steht an der Stelle nPos keine Resourceinstanz, dann ist der Inhalt undefiniert.
3200
3201Af1Querverweise
3202Aga
3203Klassen: SUBINFO_STRUCT, RSCINST.
3204
3205Aga���������������������������������������������������������
3206
3207Au0RscInst::GetCount()
3208Aga
3209AliUSHORT RscInst::GetCount();
3210Aga
3211Af1Beschreibung
3212Aga
3213Gibt die Anzahl der Resourceinstanzen zur�ck, die in der Liste gespeichert sind.
3214
3215Af1Return-Werte
3216Aga
3217Es wird die Anzahl der Resourceinstanzen zur�ckgeliefert.
3218
3219Af1Querverweise
3220Aga
3221Klasse: RSCINST.
3222
3223Aga���������������������������������������������������������
3224Aga
3225Au0RscInst::GetElement()
3226Aga
3227AliRscInst RscInst::GetElement( RscTop * pClass,
3228                             const RscId & rName );
3229Aga
3230Af1Beschreibung
3231Aga
3232Diese Methode liefert eine Referenz auf die Daten der Instanz zur�ck, die unter diesem Namen in der
3233Liste steht. Wenn unter diesem Namen keine Instanz steht, dann wir sie erzeugt.
3234
3235Af1Parameter
3236Aga
3237AfppClass	ist der Typ der Instanz.
3238rName	ist der Identifier der Instanz.
3239Aga
3240Af1Return-Werte
3241Aga
3242Es wird eine Instanz zur�ckgeliefert.
3243
3244Af1Anmerkungen
3245Aga
3246Besteht in der Liste eine Einschr�nkung auf bestimmte Resourceinstanzen, zum Beispiel nur Instanzen
3247vom Typ Window oder abgeleitete Typen, dann kann es vorkommen, da� eine ung�ltige Instanz
3248zur�ckgeliefert wird.
3249
3250Af1Querverweise
3251Aga
3252Klassen: RscTop, RscId.
3253Methode: IsInst().
3254
3255Aga���������������������������������������������������������
3256Aga
3257Au0RscInst::GetPosEle()
3258Aga
3259AliRscInst RscInst::GetPosEle( USHORT nPos );
3260Aga
3261Af1Beschreibung
3262Aga
3263Es wird eine Referenz auf die Daten der Instanz an der angegebenen Stelle zur�ckgeliefert.
3264
3265Af1Parameter
3266Aga
3267AfpnPos	ist die Position der Resourceinstanz.
3268Aga
3269Af1Return-Werte
3270Aga
3271Es wird eine Resourceinstanz zur�ckgeliefert.
3272
3273Af1Anmerkungen
3274Aga
3275Wenn an der Position keine Instanz steht, dann wird eine ung�ltige Instanz zur�ckgeliefert.
3276
3277Af1Querverweise
3278Aga
3279Klasse:  RscInst.
3280Methode: IsInst().
3281Aga
3282Aga���������������������������������������������������������
3283Aga
3284Au0RscInst::MovePosEle()
3285Aga
3286AliERRTYPE RscInst::MovePosEle( USHORT nDestPos
3287                             USHORT nSourcePos );
3288Aga
3289Af1Beschreibung
3290Aga
3291In einem Feld wird die Resourceinstanz an der Position nSourcePos an die Stelle nDestPos
3292verschoben.
3293
3294Af1Parameter
3295Aga
3296AfpnDestPos	An dieser Position wird die Instanz eingef�gt.
3297nSourcePos	Von dieser Position wird die Instanz genommen.
3298Aga
3299Af1Return-Werte
3300Aga
3301Es wird ein Fehler zur�ckgegeben, wenn nSourcePos oder nDestPos ung�ltige Positionen sind.
3302Aga
3303Aga���������������������������������������������������������
33040�
3305Aga
3306Au0RscInst::DeleteElement()
3307Aga
3308AliERRTYPE RscInst::DeleteElement( RscTop * pClass,
3309                                RscId& rName );
3310Aga
3311Af1Beschreibung
3312Aga
3313In der Liste wird die erste Resourceinstanz mit dem entsprechenden Namen und dem Typ gel�scht.
3314
3315Af1Parameter
3316Aga
3317AfppClass	ist der Typ der Resourceinstanz.
3318rName	ist der Identifier der Resourceinstanz.
3319Aga
3320Af1Return-Werte
3321Aga
3322Gibt es keinen Fehler, dann wurde die Resourceinstanz gel�scht.
3323Aga
3324Af1Querverweise
3325Aga
3326Klassen: RscTop, RscId.
3327
3328Aga���������������������������������������������������������
3329Aga
3330Au0RscInst::DeletePosEle()
3331Aga
3332AliERRTYPE RscInst::DeletePosEle( USHORT nPos );
3333Aga
3334Af1Beschreibung
3335Aga
3336Die Resourceinstanz an der Stelle nPos wird gel�scht.
3337
3338Af1Parameter
3339Aga
3340AfpnPos	ist die Position der Resourceinstanz.
3341Aga
3342Af1Return-Werte
3343Aga
3344Gibt es keinen Fehler, dann wurde die Resourseinstanz gel�scht.
3345Aga
3346Aga���������������������������������������������������������
3347Aga
3348Au0RscInst::SetVar()
3349Aga
3350AliERRTYPE RscInst::SetVar( HASHID nVarName,
3351                         RscInstCopy & rInst );
3352Aga
3353Af1Beschreibung
3354Aga
3355In die Variable mit Namen nVarName wird die Resourceinstanz rInst eingesetzt.
3356
3357Af1Parameter
3358Aga
3359AfpnVarName	ist der Name der Variablen.
3360rInst	ist die Instanz, die eingesetzt wird.
3361Aga
3362Af1Return-Werte
3363Aga
3364AgaGibt es keinen Fehler, wurde die Instanz eingesetzt.
3365Aga
3366Af1Anmerkungen
3367Aga
3368Ein Fehler tritt auf, wenn der Variablentyp und der Instanztyp nicht �bereinstimmen.
3369
3370Af1Querverweise
3371Aga
3372Klasse:  RscTop.
3373Methode: GetVar().
3374
3375Aga���������������������������������������������������������
3376Aga
3377Au0RscInst::SetConst()
3378Aga
3379AliERRTYPE RscInst::SetConst( HASHID nConst );
3380Aga
3381Af1Beschreibung
3382Aga
3383In die Instanz wird die Konstante nConst eingesetzt.
3384
3385Af1Parameter
3386Aga
3387AfpnConst	ist die Konstante, die eingesetzt wird.
3388Aga
3389Af1Return-Werte
3390Aga
3391Gibt es keinen Fehler, wurde die Konstante eingesetzt.
3392Aga
3393Af1Querverweise
3394Aga
3395Klassen:  RscTop.
3396Methoden: GetConst().
3397
3398Af1Beispiel
3399Aga�nderung einer Konstanten.
3400
3401AliRscInstCopy aColorInst;
3402RscInst     aConst;
3403RscTop*     pColorType;
3404.....
3405// Erzeuge Farbinstanz
3406aColorInst = aCmpInst.CreateRscInst( pColorType );
3407//Const-Instanz holen
3408aConst = aColorInst.GetVar( HashId( "Predefined" ) );
3409// Farbe auf blau setzten
3410aConst.SetConst( HashId( "COL_BLUE" ) );
3411// Die gleiche Wirkung haette
3412// aConst.SetNumber( COL_BLUE );
3413// wobei COL_BLUE in sv.hxx definiert ist
3414
3415Aga���������������������������������������������������������
3416Aga
3417Au0RscInst::SetBool()
3418Aga
3419AliERRTYPE RscInst::SetBool( BOOL bVal );
3420Aga
3421Af1Beschreibung
3422Aga
3423In die Instanz wird der Wert bVal eingesetzt.
3424
3425Af1Parameter
3426Aga
3427AfpbVal	ist der Wert, der eingesetzt wird.
3428Aga
3429Af1Return-Werte
3430Aga
3431AgaGibt es keinen Fehler, wurde der Wert eingesetzt.
3432Aga
3433Af1Querverweise
3434Aga
3435Klassen:  RscTop.
3436Methoden: GetBool().
3437
3438Af1Beispiel
3439Aga�ndern eines Wahrheitswertes.
3440
3441AliRscInstCopy aWindowInst;
3442RscInst     aBool;
3443RscTop*     pWindowType;
3444.....
3445// Erzeuge Windowinstanz
3446aWindowInst = aCmpInst.CreateRscInst( pWindowType );
3447aBool = aWindowInst.GetVar( HashId( "Border" ) );
3448// Fensterattribut Rand setzen
3449aBool.SetBool( TRUE );
3450
3451Aga���������������������������������������������������������
3452Aga
3453Au0RscInst::SetNumber()
3454Aga
3455AliERRTYPE RscInst::SetNumber( long lVal );
3456Aga
3457Af1Beschreibung
3458Aga
3459In die Instanz wird der Wert lVal eingesetzt.
3460
3461Af1Parameter
3462Aga
3463AfplVal	ist der Wert, der eingesetzt wird.
3464Aga
3465Af1Return-Werte
3466Aga
3467AgaGibt es keinen Fehler, wurde die Zahl eingesetzt.
3468Aga
3469Af1Querverweise
3470Aga
3471Klassen:  RscTop.
3472Methoden: GetNumber().
3473
3474Af1Beispiel
3475Aga�ndern eines Zahlenwertes.
3476
3477AliRscInstCopy aColorInst;
3478RscInst     aNumber;
3479RscTop*     pColorType;
3480.....
3481// Erzeuge Farbinstanz
3482aColorInst = aCmpInst.CreateRscInst( pColorType );
3483aNumber = aColorInst.GetVar( HashId( "RED" ) );
3484// volle Rotintensit�t
3485aNumber.SetNumber( 0xFFFF );
3486
3487Aga���������������������������������������������������������
3488
3489Au0RscInst::SetString()
3490Aga
3491AliERRTYPE RscInst::SetString( const char * pStr );
3492Aga
3493Af1Beschreibung
3494Aga
3495In die Instanz wird der String pStr eingesetzt.
3496
3497Af1Parameter
3498Aga
3499AfppStr	ist der String, der eingesetzt wird.
3500Aga
3501Af1Return-Werte
3502Aga
3503AgaGibt es keinen Fehler, wurde der String eingesetzt.
3504Aga
3505Af1Querverweise
3506Aga
3507Klassen:  RscTop.
3508Methoden: GetString();
3509
3510Af1Beispiel
3511Aga�ndern einer Zeichenkette.
3512
3513AliRscInstCopy aFontInst;
3514RscInst     aStr;
3515RscTop*     pFontType;
3516.....
3517// Erzeuge Fontinstanz
3518aFontInst = aCmpInst.CreateRscInst( pFontType );
3519aStr = aFontInst.GetVar( HashId( "Text" ) );
3520// Fontnamen setzen
3521aStr.SetString( "Helvetica" );
3522
3523Aga���������������������������������������������������������
3524
3525Au0RscInst::SetRef()
3526Aga
3527AliERRTYPE RscInst::SetRef( const RscId & rRefName );
3528Aga
3529Af1Beschreibung
3530Aga
3531Beim Schreiben der verschiedenen Dateien wird nicht die Resourceinstanz verwendet, sondern eine
3532Resourceinstanz vom selben Typ mit dem Namen rRefName. Diese Instanz wird in der Datenbasis
3533gesucht.
3534
3535Af1Parameter
3536Aga
3537AfprRefName	ist der Identifier der referenzierten Instanz.
3538Aga
3539Af1Return-Werte
3540Aga
3541AgaGibt es keinen Fehler, wurde die Referenz eingesetzt.
3542
3543Af1Anmerkungen
3544Aga
3545Die referenzierte Instanz wird nur in der ersten Ebene der Datenbasis gesucht.
3546Mit SetRef( RscId() ), werden die Referenzen wieder aufgehoben.
3547
3548Af1Querverweise
3549Aga
3550Klassen:  RscTop, RscId.
3551Methoden: GetRef().
3552
3553Af1Beispiel
3554Aga
3555Aga���������������������������������������������������������
3556Aga
3557Au0RscInst::SetDefault()
3558Aga
3559AliERRTYPE RscInst::SetDefault( HASHID nVarName );
3560Aga
3561Af1Beschreibung
3562Aga
3563Die Instanz hinter der Variable nVarName wird auf ihre Defaultwerte gesetzt.
3564
3565Af1Parameter
3566Aga
3567AfpnVarName	ist der Name der Variablen.
3568Aga
3569Af1Return-Werte
3570Aga
3571AgaGibt es keinen Fehler, wurde die Instanz nicht auf Default gesetzt.
3572
3573Af1Querverweise
3574Aga
3575Klassen:  RscTop.
3576Methoden: IsDefault().
3577
3578Af1Beispiel
3579Aga
3580AliRscInst aColorInst;
3581RscTop* pColorType;
3582.....
3583// Hole Farbinstanz
3584aColorInst = aCmpInst.GetRscInst( pColorType,
3585                                  RscId( 1000 ) );
3586// Rot auf Default setzten
3587aColorInst.SetDefault( HashId( "Red" ) );
3588
3589Aga���������������������������������������������������������
3590
3591
3592Au0RscInst::GetVar()
3593Aga
3594AliRscInst RscInst::GetVar( HASHID nVarName );
3595Aga
3596Af1Beschreibung
3597Aga
3598Die Methode liefert eine Kopie des Inhaltes der Variablen nVarName.
3599
3600Af1Parameter
3601Aga
3602AfpnVarName	ist der Name der Variablen.
3603Aga
3604Af1Return-Werte
3605Aga
3606Es wird eine Resourceinstanz zur�ckgeliefert.
3607
3608Af1Anmerkungen
3609Aga
3610Existiert keine Variable unter diesem Namen, dann wird eine ung�ltige Instanz zur�ckgeliefert.
3611
3612Af1Querverweise
3613Aga
3614Klassen:  RscTop.
3615Methoden: SetVar().
3616
3617Aga���������������������������������������������������������
3618
3619Au0RscInst::GetConst()
3620Aga
3621AliHASHID RscInst::GetConst();
3622Aga
3623Af1Beschreibung
3624Aga
3625Die Methode liefert die Instanz als Konstante.
3626
3627Af1Return-Werte
3628Aga
3629Der Wert der Konstanten.
3630Kann die Instanz nicht in eine Konstante umgewandelt werden, wird HASH_NONAME
3631zur�ckgeliefert.
3632
3633Af1Querverweise
3634Aga
3635Klassen:  RscTop.
3636Methoden: SetConst().
3637
3638Aga���������������������������������������������������������
3639
3640Au0RscInst::GetBool()
3641Aga
3642AliBOOL RscInst::GetBool();
3643Aga
3644Af1Beschreibung
3645Aga
3646Die Methode liefert die Instanz als Wahrheitswert.
3647
3648Af1Return-Werte
3649Aga
3650Es wird ein boolscher Wert zur�ckgeliefert.
3651Kann die Instanz nicht in einen Wahrheitswert umgewandelt werden, wird FALSE zur�ckgeliefert.
3652
3653Af1Querverweise
3654Aga
3655Klassen:  RscTop.
3656Methoden: SetBool().
3657
3658Aga���������������������������������������������������������
3659
3660Au0RscInst::GetNumber()
3661Aga
3662Alilong RscInst::GetNumber();
3663Aga
3664Af1Beschreibung
3665Aga
3666Die Methode liefert die Instanz als Zahl.
3667
3668Af1Return-Werte
3669Aga
3670Es wird ein Wert zur�ckgeliefert.
3671Kann die Instanz nicht in ein Zahl umgewandelt werden, wird 0 zur�ckgeliefert.
3672
3673Af1Querverweise
3674Aga
3675Klassen:  RscTop.
3676Methoden: SetNumber().
3677
3678Aga���������������������������������������������������������
3679
3680Au0RscInst::GetString()
3681Aga
3682Aliconst char * RscInst::GetVar();
3683Aga
3684Af1Beschreibung
3685Aga
3686Die Methode liefert die Instanz als String.
3687
3688Af1Return-Werte
3689Aga
3690Es wird ein Zeiger auf eine Zeichenkette zur�ckgeliefert.
3691Kann die Instanz nicht in einen String umgewandelt werden, wird NULL zur�ckgeliefert.
3692
3693Af1Querverweise
3694Aga
3695Klassen:  RscTop.
3696Methoden: SetString().
3697
3698Aga���������������������������������������������������������
3699
3700Au0RscInst::GetRef()
3701Aga
3702AliRscId RscInst::GetRef();
3703Aga
3704Af1Beschreibung
3705Aga
3706Ist in der Instanz eine Referenz eingetragen, wird diese zur�ckgegeben.
3707
3708Af1Return-Werte
3709Aga
3710Es wird der Identifier der Referenz zur�ckgeliefert.
3711
3712Af1Anmerkungen
3713Aga
3714Der zur�ckgelieferte Identifier kann ung�ltig sein. Das ist der Fall, wenn keine Referenz besteht.
3715
3716Af1Querverweise
3717Aga
3718Klassen: RscTop, RscId.
3719Methode: IsId(), SetDefault().
3720
3721Aga���������������������������������������������������������
3722
3723Au0RscInst::IsDefault()
3724Aga
3725AliBOOL RscInst::IsDefault( HASHID nVarName );
3726Aga
3727Af1Beschreibung
3728Aga
3729Stellt fest ob die genannte Variable noch die Defaulteinstellung besitzt.
3730
3731Af1Parameter
3732Aga
3733AfpnVarName	ist der Name der Variablen.
3734Aga
3735Af1Return-Werte
3736Aga
3737AfpTRUE	bedeutet, die Variable hat die Defaulteinstellung.
3738FALSE	bedeutet, sie wurde ver�ndert.
3739Aga
3740Af1Querverweise
3741Aga
3742Methoden: SetDefault().
3743
3744Aga���������������������������������������������������������
3745
3746Au0RscInst::IsConsistent()
3747Aga
3748AliBOOL RscInst::IsConsistent( RscInconsList * pList );
3749Aga
3750Af1Beschreibung
3751Aga
3752Die Methode �berpr�ft ob diese Instanz noch konsistent ist.
3753
3754Af1Parameter
3755Aga
3756AfppList	Eine Liste die mit den RscId-Objekten gef�llt wird, die
3757"Inkonsistenzen hervorrufen. pList darf Null sein.
3758Aga
3759Af1Return-Werte
3760Aga
3761AfpTRUE	bedeutet die Instanz ist konsistent.
3762FALSE	bedeutet die Instanz ist inkonsistent.
3763Aga
3764Af1Anmerkungen
3765Aga
3766Ein RscId-Objekt kann aus Objekten zusammengesetzt sein, die global ver�ndert werden k�nnen.
3767Nach einer solchen Ver�nderung mu� die Konsistenz �berpr�ft werden.
3768
3769Af1Querverweise
3770Aga
3771Klassen:  RscId, RscHrc, RscFileTab.
3772Mehtoden: RscDataBase::MakeConsistent(), RscTop::IsConsistent().
3773
3774Aga���������������������������������������������������������
3775Au0
3776Au0RscInst::GetClassEnum()
3777Aga
3778AliHASHID RscInst::GetClassEnum( USHORT nPos );
3779Aga
3780Af1Beschreibung
3781Aga
3782Diese Methode liefert den Namen der Konstanten zur�ck, die in einem Aufz�hlungstyp an der Position
3783nPos definiert ist.
3784
3785Af1Parameter
3786Aga
3787AfpnPos	Position der Konstante.
3788Aga
3789Af1Return-Werte
3790Aga
3791AfpHASH_NONAME	Dieser Wert wird zur�ckgeliefert, wenn der Variablentyp kein
3792"Aufz�hlungstyp war oder wenn nPos >= der Anzahl der
3793"Konstanten.
3794AgaSonst wird der Name der Konstanten zur�ckgeliefert.
3795Aga
3796Af1Beispiel
3797Aga
3798Das Beispiel zeigt wie die Namen eine Aufz�hlungstypen ermittelt werden k�nnen.
3799AgaVariable ist ein Aufz�hlungstyp mit den Werten COL_WHITE, COL_RED und COL_BLACK. Die
3800Konstanten haben die Name "White", "Red", "Black".
3801Der Variablenname ist "Predefined".
3802Die Klasse, in der diese Variable definiert ist, hei�t "Color".
3803Ali
3804HASHID nConstName;
3805HASHID nVarName;
3806RscInst aColorInst;
3807RscInst aConst;
3808USHORT i;
3809
3810nVarName = HashId( "Predefined" ); //Variablennamen setzen
3811// pCmpEd ist eine Compiler-Instanz
3812aColorInst = pCmpEd->CreateRscInst(
3813               pCmpEd->GetClassType( HashId( "Color" ) ) );
3814 if( aColorInst.IsInst() ){ //Instanz wurde erzeugt
3815	aConst = aColorInst.GetVar( nVarName );
3816	i = 0;
3817	nConstName = aConst.GetClassEnum( i );
3818	while( HASH_NONAME != nConstName ){
3819		printf( "%s\n", GetHashString( nConstName ) );
3820		i++;
3821		nConstName = aConst.GetClassEnum( i );
3822	}
3823}
3824Aga
3825Die Ausgabe ist:
3826White
3827Red
3828Black
3829Aga���������������������������������������������������������
3830
3831Au0RscInst::GetTypeClass()
3832Aga
3833AliRscTop * RscInst::GetTypeClass();
3834Aga
3835Af1Beschreibung
3836Aga
3837Diese Methode liefert den Typ der Instanz zur�ck.
3838
3839Af1Return-Werte
3840Aga
3841Der Typ der Instanz wird zur�ckgeliefert.
3842
3843Aga���������������������������������������������������������
3844
3845Au0RscInst::GetClassName()
3846Aga
3847AliHASHID RscInst::GetClassName();
3848Aga
3849Af1Beschreibung
3850Aga
3851Diese Methode liefert den Namen einer Klasse.
3852
3853Af1Return-Werte
3854Aga
3855AfpHASH_NONAME	Dieser Wert wird zur�ckgeliefert, wenn die Klasse keinen Namen
3856"hat.
3857AgaAnsonsten wird der Name der Klasse zur�ckgeliefert.
3858
3859Af1Beispiel
3860AgaDiese Funktion gibt zu einer Instanz den Klassennamen aus.
3861
3862Alivoid PrintClassName( RscInst & rInst ){
3863// rInst, Instanz deren Klassenname ausgegeben werden soll
3864HASHID nClassName;
3865
3866nClassName = rInst.GetClassName(); // Klassenname holen
3867if( HASH_NONAME == nClassName )
3868	printf( "Kein Klassenname\n" );
3869else
3870	printf( "%s\n", GetHashString( nClassName ) );
3871}
3872Aga
3873Aga���������������������������������������������������������
3874Au0
3875Au0RscInst::WriteRc()
3876Aga
3877AliERRTYPE RscInst::WriteRc( RscWriteRc & aMem );
3878Aga
3879Af1Beschreibung
3880Aga
3881Diese Methode erzeugt eine Resource im StarView Resourceformat. Mit dieser Resource kann der
3882Resourcekonstruktor der entsprechenden Klasse gerufen werden.
3883
3884Af1Parameter
3885Aga
3886AfpaMem	ist die Instanz, die die Resourcedaten enth�lt.
3887Aga
3888Af1Return-Werte
3889Aga
3890AfpERRTYPE.IsOk()	bedeutet, da� in aMem eine korrekte Resource steht.
3891anderer Wert	bedeutet, das Format ist nicht korrekt.
3892Aga
3893Af1Ausnahmen
3894Aga
3895Die System abh�ngigen Resourcen Icon, Bitmap und Pointer werden nicht vollst�ndig geschrieben.
3896Um einen Programmfehler zu vermeiden, m�ssen die StarView-Klassen entsprechend abgesichert sein.
3897
3898Af1Anmerkungen
3899Aga
3900Die Referenzen m�ssen zum Zeitpunkt von WriteRc aufgel�st werden k�nnen. K�nnen sie nicht
3901aufgel�st werden, werden die Daten der Instanz benutzt, in der die Referenz angegeben ist.
3902
3903Af1Querverweise
3904Aga
3905Klassen: RscWriteRc, ERRTYPE.
3906
3907Af1Beispiel
3908Aga
3909AliRscInst aColor;
3910RscTop* pColorType;
3911Color   aSvColor;
3912
3913// Farbinstanz erzeugen
3914aColor = aCmpInst.CreateColor( pColorType );
3915// Farbe auf Gelb setzten
3916AliaColor.SetConst( HashId( "Predefined" ),
3917                 HashId( "COL_YELLOW" ) );
3918
3919RscWriteRc aMem;
3920if( aColor.WriteRc( aMem ).IsOk() ){
3921    aSvColor = Color( RscId( aMem.GetRes() ) );
3922    .....
3923};
3924Aga
3925
3926Aga���������������������������������������������������������
3927Au0PARscInstCopy
3928Aga
3929Aliclass RscInstCopy {
3930public:
3931                RscInstCopy();
3932                RscInstCopy( const RscInstCopy & rInst );
3933                RscInstCopy( const RscInst & rInst );
3934                RscInstCopy( RSCINST aTmpI );
3935                RscInstCopy( RscTop * pNewType,
3936                             const RscInst & rInst );
3937    RscInstCopy& operator = (const RscInstCopy & rRscInst);
3938    RscInstCopy& operator = ( const RscInst & rRscInst );
3939                ~RscInstCopy();
3940};
3941Aga
3942Af1Beschreibung
3943Aga
3944Mit Hilfe dieser Klasse wird eine Kopie einer Resourceinstanz angefertigt. Die Kopie enth�lt keine
3945Referenz in die Datenbasis. Es kann somit auch nicht zu einem Fehler kommen, wenn eine
3946Resourceinstanz in der Datenbasis gel�scht wird. Solch ein Fehler kann bei einer Instanz der Klasse
3947RscInst auftreten.
3948
3949Af1Anmerkung
3950Aga
3951Alle Makros die in der Datenbasis ge�ndert werden, �ndern sich auch in dieser Instanz. Mit der
3952Methode IsConsistent() kann diese Instanz auf Konsistenz �berpr�ft werden.
3953
3954Af1Querverweise
3955Aga
3956Klassen: RscDataBase, RscHrc, RscSrc, RSCINST, RscTop, RscId.
3957
3958Af1Beispiel
3959AgaDas Beispiel zeigt, wie der Wert einer Variablen ge�ndert wird
3960Ali.....
3961RscInstCopy  aWindow;
3962RscInstCopy  aBorder;
3963RscTop*      pWindowType;
3964
3965// Typ des Klasse Window
3966pWindowType = aDataBase.GetClassType( HashId( "Window" ) );
3967// Exemplar der Klasse Window erzeugen
3968aWindow = aCompilerInst.CreateRscInst( pWindowType );
3969// Exemplar mit Namen "Border" holen
3970aBorder = aWindow.GetVar( HashId( "Border" ) );
3971// Wert auf TRUE setzen
3972aBorder.SetBool( TRUE );
3973// wieder in aWindow einsetzen
3974aWindow.SetVar( HashId( "Border" ), aBorder );
3975.....
3976Aga
3977Au0PARscInstCopy::RscInstCopy()
3978Aga
3979AliRscInstCopy::RscInstCopy();
3980RscInstCopy::RscInstCopy( const RscInst & rInst );
3981RscInstCopy::RscInstCopy( const RscInstCopy & rInst );
3982RscInstCopy::RscInstCopy( RSCINST aTmpI );
3983RscInstCopy::RscInstCopy( RscTop * pNewType,
3984                          const RscInst & rInst );
3985Aga
3986Af1Beschreibung
3987Aga
3988Im Konstruktor wird eine Instanz erzeugt oder kopiert.
3989
3990Af1Parameter
3991Aga
3992AfprInst	ist die Instanz, die kopiert wird.
3993aTmpI	Aus dieser Instanz wird eine RscInstCopy erzeugt.
3994pNewType	Wenn dieser Konstruktor verwendet wird, wird eine Instanz mit
3995"Typ pNewType erzeugt. Alle Daten ab der ersten gemeinsamen
3996"Oberklasse von rInst und pNewType werden �bernommen.
3997Aga
3998Af1Querverweise
3999Aga
4000Klassen:  RSCINST, ERRTYPE.
4001Methoden: IsInst(), GetClassType().
4002
4003Af1Beispiel
4004AgaEs wird gezeigt wie aus einer Button-Instanz eine Edit-Instanz erzeugt wird.
4005
4006AliRscInstCopy aButton;
4007RscInstCopy aEdit;
4008RscTop * pEditType =
4009         aDataBase.GetClassType( HashId( "Edit" ) );
4010//Voraussetzung: In aButton ist g�ltige Button-Instanz
4011//Erzeuge Edit-Instanz
4012aEdit = RscInstCopy( pEditType, aButton );
4013Aga
4014Alle Daten oberhalb von der Klasse Control wurden nach aEdit kopiert.
4015Aga
4016Aga���������������������������������������������������������
4017
4018Au0RscInstCopy::operator = ()
4019Aga
4020AliRscInstCopy & RscInstCopy::operator =
4021                           ( const RscInst & rInst );
4022RscInstCopy & RscInstCopy::operator =
4023                           ( const RscInstCopy & rInst );
4024Aga
4025Af1Beschreibung
4026Aga
4027Es werden die Daten von rInst in die Instanzdaten kopiert.
4028
4029Af1Parameter
4030Aga
4031AfprInst	Intanz von dem die Daten �bernommen werden.
4032Aga
4033Af1Return-Werte
4034Aga
4035Es wird die eigene Instanz zur�ckgeliefert.
4036Aga
4037Aga���������������������������������������������������������
4038Aga
4039
4040Au0RscInstCopy::~RscInstCopy()
4041Aga
4042AliRscInstCopy::~RscInstCopy();
4043Aga
4044Af1Beschreibung
4045Aga
4046Die Daten in der Instanz werden gel�scht.
4047
4048Aga���������������������������������������������������������
4049Aga
4050SsvPA
4051Au0Stichwortverzeichnis
4052Aga
4053Asv
4054RscDataBase	6
4055RscDataBase::AddHrcFile()	11
4056RscDataBase::AddSrcFile()	10
4057RscDataBase::FindDef()	12
4058RscDataBase::GetClassType()	7
4059RscDataBase::GetFileKey()	12
4060RscDataBase::GetFileStruct()	9
4061RscDataBase::GetFileTab()	9
4062RscDataBase::GetPathList()	10
4063RscDataBase::MakeConsistent()	
40638
4064RscDataBase::RemoveFile()	12
4065RscDataBase::RscDataBase()	7
4066RscDataBase::ScanForIncFiles()	11
4067RscHrc	#14
4068RscHrc::ChangeDef()	20
4069RscHrc::ChangeDefName()	22
4070RscHrc::DeleteDef()	21
4071RscHrc::FindDef()	19
4072RscHrc::GetDefineList()	18
4073RscHrc::GetDependList()	23
4074RscHrc::GetFileKey()	16
4075RscHrc::GetFileName()	18
4076RscHrc::GetFileStruct()	22
4077RscHrc::GetPathName()	17
4078RscHrc::InsertDepend()	18
4079RscHrc::IsDefUsed()	21
4080RscHrc::IsDirty()	16
4081RscHrc::NewDef()	19
4082RscHrc::ReadFile()	15
4083RscHrc::RscHrc()	15
4084RscHrc::SetDirty()	16
4085RscHrc::SetFileName()	17
4086RscHrc::SetPathName()	17
4087RscHrc::WriteFile()	23
4088RscHrc::~RscHrc()	15
4089RscInst	"31
4090RscInst::DeleteElement()	38
4091RscInst::DeletePosEle()	39
4092RscInst::GetBool()	44
4093RscInst::GetClassEnum()	46
4094RscInst::GetClassName()	48
4095RscInst::GetConst()	44
4096RscInst::GetCount()	36
4097RscInst::GetElement()	37
4098RscInst::GetInfoEle()	36
4099RscInst::GetNumber()	44
4100RscInst::GetPosEle()	37
4101RscInst::GetRef()	45
4102RscInst::GetString()	45
4103RscInst::GetTypeClass()	47
4104RscInst::GetVar()	43
4105RscInst::IsConsistent()	46
4106RscInst::IsDefault()	46
4107RscInst::IsInst()	34
4108RscInst::MovePosEle()	38
4109RscInst::operator = ()	33
4110RscInst::OverWrite()	34
4111RscInst::RscInst()	33
4112RscInst::SetBool()	40
4113RscInst::SetConst()	39
4114RscInst::SetDefault()	43
4115RscInst::SetElement()	34
4116RscInst::SetNumber()	41
4117RscInst::SetPosEle()	35
4118RscInst::SetPosRscId()	35
4119RscInst::SetRef()	42
4120RscInst::SetString()	41
4121RscInst::SetVar()	39
4122RscInst::WriteRc()	48
4123RscInst::~RscInst()	33
4124RscInstCopy	50
4125RscInstCopy::operator = ()	51
4126RscInstCopy::RscInstCopy()	51
4127RscInstCopy::~RscInstCopy()	52
4128RscSrc	#24
4129RscSrc::CreateRscInst()	26
4130RscSrc::DeleteRscInst()	27
4131RscSrc::FillNameIdList()	29
4132RscSrc::GetRscInst()	28
4133RscSrc::RscSrc()	26
4134RscSrc::SetRscInst()	27
4135RscSrc::Write...File()	30
4136
4137Aga
4138