home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-06-10 | 75.0 KB | 1,990 lines |
- TURBO C++ ZUSATZPROGRAMME
- -------------------------
-
- Ihr Turbo C++ Paket enthält weit mehr als nur zwei Versionen des
- schnellsten der derzeit verfügbaren C-Compiler. Es enthält auch
- elf leistungsstarke Zusatzprogramme, die Sie zusammen mit Ihren
- Turbo C++ Dateien oder anderen Modulen benutzen können. Die Utilities
- MAKE, TLIB, TLINK und TOUCH sind im Benutzerhandbuch beschrieben.
- Die Beschreibungen zu folgenden Programmen finden Sie in dieser
- Datei:
-
- BGIOBJ (ein Konvertierungsprogramm für Grafiktreiber und -Zeichensätze)
-
- CPP (der Turbo C++ Präprozessor)
-
- GREP (ein Zusatzprogramm zum Durchsuchen von Dateien)
-
- OBJXREF (erstellt Querverweislisten für Objektmodule)
-
- THELP (das Zusatzprogramm Turbo-Hilfe)
-
- TRIGRAPH (ein Zusatzprogramm zur Zeichenkonvertierung)
-
- PRJCNVT (Konvertierung von Turbo C 2.0 Projektdateien in das
- Turbo C++ Format)
-
-
- In diesem Kapitel wird jedes Zusatzprogramm erläutert und dessen
- Anwendung mit Code und Kommandozeilen-Beispielen demonstriert.
-
-
- ========================================================================
-
- BGIOBJ: Das Konvertierungsprogramm für Grafiktreiber und Zeichensätze
- ---------------------------------------------------------------------
-
- Mit BGIOBJ können Sie Grafiktreiber-Dateien und Zeichensätze (einge-
- bundene Zeichensatz-Dateien) in Objekt-Dateien (.OBJ) konvertieren.
- Sobald sie konvertiert sind, können sie in Ihr Programm gelinkt und
- somit Teil der ausführbaren .EXE Datei werden. Dies ist eine
- Alternative zum zum dynamischen Ladevorgang des Grafikpakets, bei dem
- Ihr Programm Grafiktreiber und Zeichensätze (eingebundene
- Zeichensätze) zur Laufzeit von Platte lädt.
-
- Das direkte Linken der Grafiktreiber und Zeichensätze in Ihr Programm
- ist von Vorteil, da die ausführbare Datei alle (bzw. die meisten)
- Grafiktreiber und/oder Zeichensätze, die es vielleicht benötigt,
- enthält und deshalb nicht zur der Laufzeit auf Grafiktreiber- und
- Zeichensatz-Dateien zugreifen muß. Das Linken der Grafiktreiber und
- Zeichensätze in Ihre ausführbare Datei vergrößert diese naturgemäß.
-
- Mit dem Zusatzprogramm BGIOBJ.EXE können Sie eine Grafiktreiber- bzw.
- Zeichensatz-Datei zu einer linkfähigen Objekt-Datei konvertieren. Hier
- die vereinfachte Syntax:
-
- BGIOBJ Quelldatei
-
- dabei ist Quelldatei die Grafiktreiber- bzw. Zeichensatz-Datei, die in
- eine Objekt-Datei konvertiert wird. Die neue Objekt-Datei hat den
- selben Dateinamen wie die Quelldatei mit der Extension .OBJ; zum
- Beispiel wird EGAVGA.BGI zu EGAVGA.OBJ, aus SANS.CHR wird SANS.OBJ,
- usw.
-
- Neue .OBJ-Dateien zur GRAPHICS.LIB hinzufügen
- Sie sollten die Grafiktreiber- und Zeichensatz-Objektmodule zur
- GRAPHICS.LIB hinzufügen, damit der Linker sie beim Linken in den
- Grafik-Routinen finden kann. Falls Sie das nicht tun, müssen Sie sie
- in die Dateiliste der TC-Projekt-Datei (.PRJ), die Dateiliste in der
- TCC-Kommandozeile oder in der TLINK-Kommandozeile aufnehmen. Um
- Objektmodule in GRAPHICS.LIB aufzunehmen, aktivieren Sie TLIB mit
- der folgenden Kommandozeile:
-
- tlib graphics + Objekt_Datei [+ Objekt_Datei ...]
-
- wobei Objekt_Datei der Name der Objekt-Datei ist, die mit BGIOBJ.EXE
- erzeugt wurde (wie beispielsweise CGA, EGAVGA, GOTH usw.). Die Exten-
- sion .OBJ wird dabei automatisch angehängt. Um Zeit zu sparen, können
- Sie mehrere Dateien in einer Kommandozeile angeben; hierfür ein
- Beispiel im folgenden Abschnitt.
-
- Registrierung eines Grafiktreibers und -Zeichensatzes
- Nachdem Sie die Grafiktreiber- und Zeichensatz-Objektmodule GRAPHICS.
- .LIB hinzugefügt haben, müssen Sie alle Grafiktreiber- und Zeichen-
- sätze, die gelinkt werden sollen, registrieren. Dazu rufen Sie
- registerbgidriver und registerbgifont in Ihrem Programm auf (bevor
- Sie initgraph aufrufen). Das Grafiksystem weiß nun, daß diese Dateien
- existieren und stellt sicher, daß sie gelinkt werden, wenn der Linker
- eine ausführbare Datei erzeugt.
-
- Jeder Registrierungs-Routine ist ein Parameter zugeordnet; ein symbo-
- lischer Name, der in graphics.h definiert ist. Jede Registrierungs-
- Routine liefert einen nicht-negativen Wert, wenn Grafiktreiber und
- Zeichensatz erfolgreich registriert wurden.
-
- Die folgende Tabelle zeigt die Namen, die mit registerbgidriver und
- registerbgifont verwendet werden. In dieser Liste sind alle Grafik-
- treiber und Zeichensätze von Turbo C++ enthalten.
-
- Grafiktreiber-Datei registerbgidriver Zeichensatz-Datei registerbgifont
- (*.BGI) symbolischer Name (*.CHR) symbolischer Name
- ===========================================================================
- CGA CGA_driver TRIP triplex_font
- EGAVGA EGAVGA_driver LITT small_font
- HERC Herc_driver SANS sansserif_font
- ATT ATT_driver GOTH gothic_font
- PC3270 PC3270_driver
- IBM8514 IBM8514_driver
-
-
- Ein Beispiel
- Angenommen, Sie möchten die Dateien für den CGA-Grafiktreiber, den
- Gothic- und den Triplex-Zeichensatz zu Objektmodulen compilieren und
- danach in Ihr Programm linken. Dazu gehen Sie folgendermaßen vor:
-
- Konvertieren Sie die Binärdateien mit Hilfe von BGIOBJ.EXE, wie in
- den folgenden einzelnen Kommandozeilen gezeigt wird.
-
- bgiobj cga
- bgiobj trip
- bgiobj goth
-
- Dadurch werden drei Dateien erzeugt: CGA.OBJ, TRIP.OBJ, and GOTH.OBJ.
-
- Sie können diese Objekt-Dateien mit nachfolgender TLIB Kommandozeile
- zur GRAPHICS.LIB hinzufügen:
-
- tlib graphics +cga +trip +goth
-
- Wenn Sie die Objekt-Dateien nicht zu GRAPHICS.LIB hinzufügen, müssen
- Sie die Objekt-Dateinamen CGA.OBJ, TRIP.OBJ und GOTH.OBJ Ihrer Projekt-
- liste (wenn Sie die integrierte Umgebung von Turbo C++ benutzen),
- oder der TCC-Kommandozeile hinzufügen. Die TCC-Kommandozeile würde
- beispielsweise wie folgt aussehen:
-
- tcc niftgraf graphics.lib cga.obj trip.obj goth.obj
-
- Sie registrieren diese Dateien in Ihrem Grafikprogramm folgendermaßen:
-
- Sollten Sie die Linker-Fehlermeldung "Segment exceeds 64K" nach dem Linken
- einiger Grafiktreiber und/oder Zeichensätze bekommen, verweisen wir auf den
- folgenden Abschnitt.
-
- /* Header-Datei deklariert CGA_driver, triplex_font & gothic_font */
- #include <graphics.h>
-
- /* Auf Fehler überprüfen (man kann nie wissen...) */
-
- if (registerbgidriver(CGA_driver) < 0) exit(1);
- if (registerbgifont(triplex_font) < 0) exit(1);
- if (registerbgifont(gothic_font) < 0) exit(1);
-
- /* ... */
-
- initgraph(....); /* initgraph sollte nach der Regi-
- strierung aufgerufen werden */
-
- /* ... */
-
-
- Die /F Option
- Dieser Abschnitt beschreibt, was Sie tun müssen, wenn Sie nach dem
- Linken mehrerer Grafiktreiber- und/oder Zeichensatz-Dateien (ins-
- besondere bei Verwendung der Speichermodelle Small und Compact) die
- Linker-Fehlermeldung "Segment exceeds 64K" (oder etwas ähnliches)
- erhalten.
-
- Per Vorgabe benutzen alle, von BGIOBJ.EXE erzeugten Dateien das
- gleiche Segment (mit Namen _TEXT). Dies kann problematisch werden,
- wenn Ihr Programm viele Grafiktreiber und/oder Zeichensätze linkt
- bzw. wenn Sie die Speichermodelle Small oder Compact benutzen.
-
- Zur Lösung dieses Problems können Sie einen oder mehrere Grafiktreiber
- oder Zeichensätze mit der BGIOBJ /F Option konvertieren. BGIOBJ wird
- mit dieser Option angewiesen, einen Segmentnamen vom Typ filename_TEXT
- zu benutzen, so daß das vorgegebene Segment nicht durch alle gelinkten
- Grafiktreiber und Zeichensätze überlastet ist (das gilt bei den Spei-
- chermodellen Small und Compact für den Programmcode). Durch die folgen-
- den zwei BGIOBJ-Kommandozeilen wird BGIOBJ angewiesen, Segmentnamen vom
- Typ EGAVGA_TEXT und SANS_TEXT zu benutzen.
-
- bgiobj /F egavga
- bgiobj /F sans
-
- Wenn Sie /F wählen, hängt BGIOBJ ebenfalls F an den Dateinamen des
- Zielobjektes (EGAVGAF.OBJ, SANSF.OBJ, usw.) und hängt _far an den
- Namen, der mit registerfarbgidriver und registerfarbgifont benutzt
- wird. (Zum Beispiel: EGAVGA_driver wird zu EGAVGA_driver_far.)
-
- Bei Dateien, die mit /F erzeugt wurden, müssen Sie diese Far-Regi-
- strierungs-Routinen anstelle des regulären registerbgidriver und
- registerbgifont benutzen. Zum Beispiel:
-
- if (registerfarbgidriver(EGAVGA_driver_far) < 0) exit(1);
- if (registerfarbgifont(sansserif_font_far) < 0) exit(1);
-
-
- Weitere Funktionen
- In diesem Abschnitt werden weitere Funktionen von BGIOBJ und die
- Routinen registerfarbgidriver und registerfarbgifont beschrieben.
- Nur erfahrene Benutzer sollten diese Funktionen anwenden.
-
- Dies ist die vollständige Syntax der BGIOBJ.EXE-Kommandozeile:
-
- BGIOBJ [/F] Quelldatei Zieldatei globaler_Name seg_Name seg_Klasse
-
- Diese Tabelle beschreibt die Parameter der BGIOBJ-Kommandozeile.
-
- Parameter Beschreibung
- ======================================================================
-
- /F or -F Diese Option weist BGIOBJ.EXE an, einen anderen Seg-
- mentnamen als _TEXT (die Vorgabe) zu verwenden, sowie
- den globalen Namen und den Namen der Zieldatei zu
- ändern.
-
- Quelldatei Zu konvertierende Grafiktreiber- bzw Zeichensatz-Datei.
- Wenn die Datei nicht mit Turbo C++ ausgeliefert wurde,
- sollten Sie einen vollständigen Dateinamen (mit Exten-
- sion) angeben.
-
- Zieldatei Name der zu erzeugenden Objekt-Datei. Die Standardvorgabe
- ist Quelldatei.OBJ bzw. QuelldateiF.OBJ, wenn Sie die
- /F Option verwenden.
-
- globaler Name Der Name, der beim Aufruf von registerbgidriver bzw.
- registerbgifont (oder der entsprechenden far-Version)
- verwendet wird.
-
- Es ist der externe Name, der ebenfalls vom Linker be-
- nutzt wird, und muß im Programm mit einem Unterstrich
- versehen werden. Falls Ihr Programm Pascal-Aufruf-
- Konventionen verwendet, muß der globale Name aus Groß-
- buchstaben bestehen und darf mit keinem Unterstrich
- eingeleitet werden.
-
- Segmentname Der Segmentname ist optional; die Standardvorgabe
- ist _TEXT (bzw. Dateiname_TEXT bei Verwendung des
- Parameters /F).
-
- Segmentklasse Die Klassifizierung des Segments ist optional; die
- Standardvorgabe ist CODE.
-
- Alle Parameter, außer der Quelldatei, sind optional. Wenn Sie jedoch
- einen optionalen Parameter spezifizieren, müssen auch alle voran-
- stehenden Parameter spezifiziert werden.
-
- Wenn Sie eigene globale Namen verwenden wollen, müssen Sie Ihrem
- Programm entsprechende Prototypen hinzufügen.
-
- void globaler_Name(void); /* Für die Konvertieruung ohne /F bzw. */
- /* mit dem Standard-Segmentnamen */
-
- extern int far globaler_Name[]; /* Für die Konvertierung mit /F */
- /* bzw. mit Segmentname != _TEXT */
-
- Bei diesen Deklarationen stimmt globaler_Name mit dem globalen
- Namen überein, der bei der Konvertierung mit BGIOBJ verwendet wurde.
- Die Header-Datei graphics.h enthält Deklarationen der globalen Namen
- der Standardvorgaben von Grafiktreibern und Zeichensätzen. Wenn
- Sie mit diesen Standard-Treibern und Zeichensätzen arbeiten, sind
- Deklarationen nicht notwendig.
-
- Nach der Deklaration müssen alle Grafiktreiber und Zeichensätze in
- Ihrem Programm registriert werden. Wenn Sie nicht mit der /F Option
- arbeiten und den Standard-Segmentnamen nicht ändern, sollten Sie
- die Grafiktreiber und Zeichensätze mit Hilfe von registerbgidriver
- und registerbgifont registrieren; anderenfalls verwenden Sie
- registerfarbgidriver und registerfarbgifont.
-
- Hier sehen Sie ein Programmbeispiel, das eine Zeichensatz-Datei in
- den Speicher lädt:
-
- /* Beispiel, in dem eine Zeichensatz-Datei in den Speicher geladen wird */
-
- #include <graphics.h>
- #include <io.h>
- #include <fcntl.h>
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <process.h>
- #include <alloc.h>
-
- main()
- {
- void *gothic_fontp; /* Zeigt auf den Zeichensatz-Puffer im Speicher */
- int handle; /* Datei-Handle für I/O */
- unsigned fsize; /* Dateigröße (und Puffer) */
-
- int errorcode;
- int graphdriver;
- int graphmode;
-
- /* Öffnen der Zeichensatz-Datei */
- handle = open("GOTH.CHR", O_RDONLY|O_BINARY);
- if (handle == -1)
- {
- printf("Zeichensatz-Datei 'GOTH.CHR' kann nicht geöffnet werden\n");
- exit(1);
- }
- /* Dateigröße herausfinden */
- fsize = filelength(handle);
- /* Puffer zuweisen */
- gothic_fontp = malloc(fsize);
- if (gothic_fontp == NULL)
- {
- printf("Speicherplatz für Zeichensatz-Datei 'GOTH.CHR' nicht zuweisbar\n");
- exit(1);
- }
- /* Zeichensatz in den Speicher einlesen */
- if (read(handle, gothic_fontp, fsize) != fsize)
- {
- printf("Zeichensatz-Datei 'GOTH.CHR' kann nicht gelesen werden\n");
- exit(1);
- }
- /* Zeichensatz-Datei schließen */
- close(handle);
- /* Zeichensatz registrieren */
- if (registerfarbgifont(gothic_fontp) != GOTHIC_FONT)
- {
- printf("Zeichensatz-Datei 'GOTH.CHR' kann nicht registriert werden\n");
- exit(1);
- }
- /* Grafik finden und initialisieren */
- graphdriver = DETECT;
- initgraph(&graphdriver, &graphmode, "..");
- errorcode = graphresult();
- if (errorcode != grOk)
- {
- printf("Grafik-Fehler: %s\n",grapherrormsg(errorcode));
- exit(1);
- }
- settextjustify(CENTER_TEXT, CENTER_TEXT);
- settextstyle(GOTHIC_FONT, HORIZ_DIR, 4);
- outtextxy(getmaxx()/2,getmaxy()/2,
- "Borland Graphics Interface (BGI)");
- /* Mit beliebiger Taste beenden */
- getch();
- /* Grafik schließen */
- closegraph();
- return(0);
- }
-
-
- ========================================================================
-
- CPP: Der Präprozessor
- ---------------------
-
- CPP erstellt Listings von C-Quelltexten, die Include-Dateien und
- #define Makros enthalten. Er ist nicht zur normalen Compilierung
- eines C-Programms erforderlich.
-
- Wenn der Compiler einen Fehler innerhalb eines Makros oder einer
- Include-Datei meldet, erhalten Sie oft mehr Information über den
- Fehler, wenn Sie sich die Include-Dateien oder das Ergebnis des
- erweiterten Makros ansehen. In vielen Multi-pass Compilern (Com-
- piler, die mit mehreren Durchläufen arbeiten) führt ein separater
- Durchlauf diese Aufgabe aus, das Ergebnis des Durchlaufs kann dann
- untersucht werden. Da Turbo C++ einen integrierten Single-pass Com-
- piler benutzt, wird CPP mitgeliefert, um die Funktion, die bei ande-
- ren Compilern der erste Durchlauf erfüllt, auch Turbo C++ Benutzern
- zur Verfügung zu stellen.
-
- Sie verwenden CPP genauso wie TCC, den eigenständigen Kommandozeilen-
- Compiler. CPP liest auch aus der TURBOC.CFG-Datei die Standardvorgaben
- ab und akzeptiert dieselben Kommandozeilen-Parameter wie TCC.
-
- Die TCC-Parameter, die mit CPP nicht übereinstimmen, werden von CPP
- ignoriert. Geben Sie cpp nach dem DOS-Prompt ein, und Sie erhalten
- eine Liste der CPP-Argumente.
-
- In der CPP-Kommandozeile aufgelistete Dateinamen werden mit einer
- Ausnahme wie bei TCC behandelt, wobei Jokerzeichen erlaubt sind.
- Die Ausnahme besteht in der Behandlung aller Dateien als C-Quell-
- dateien. Es gibt keine spezielle Handhabung der .OBJ, .LIB oder
- .ASM-Dateien.
-
- Jede von CPP übersetzte Datei wird in eine Datei im aktuellen
- Directory (bzw. in das durch die Option -n benannte Ausgabe-
- Directory) geschrieben. Die Extension .C wird jeweils durch die
- Extension .I ersetzt.
-
- Diese Ausgabedatei ist eine Textdatei und enthält jede Zeile der
- Quelldatei, sowie sämtliche Include-Dateien. Präprozessor-Direktiven
- wurden entfernt, ebenso Textzeilen, die von der Compilierung aus-
- geschlossen wurden. Soweit in der Kommandozeile nicht durch Setzen
- eines Parameters anders spezifiziert, beginnt jede Textzeile mit
- der Zeilennummer und dem Namen der Quelltext- bzw. Include-Datei.
- Innerhalb einer Textzeile werden sämtliche Makros durch ihre
- volle Definition ersetzt.
-
- Wichtig! Die Ausgabedatei von CPP kann aufgrund des Dateinamens
- und der Zeilennummer, die jeder Zeile einer Quelldatei vorangestellt
- wird, nicht compiliert werden.
-
-
- CPP als Makro-Präprozessor
- Mit Hilfe der -P Option setzt CPP vor jede Zeile den Namen und die
- Zeilennummer der Quelldatei. Geben Sie -P- an (wodurch die Option
- ausgeschaltet wird), wird diese Zeilennummernangabe unterdrückt.
- Nun können Sie CPP als Makro-Präprozessor verwenden; die entstandene
- .I-Datei kann mit TC oder TCC compiliert werden.
-
-
- Ein Beispiel:
- Das folgende einfache Beispiel demonstriert die Verarbeitung einer
- Datei, zuerst mit dem Parameter -P, danach mit dem Parameter -P-.
-
- Quelldatei: HELLOJOE.C
- #define NAME "Josef Schmidt"
- #define BEGIN {
- #define END }
-
- main()
- BEGIN
- printf("%s\n", NAME);
- END
-
- Kommandozeile zur Aktivierung von CPP als Präprozessor:
-
- cpp hellojoe.c]
-
- Ausgabe:
- hellojoe.c 1:
- hellojoe.c 2:
- hellojoe.c 3:
- hellojoe.c 4:
- hellojoe.c 5: main()
- hellojoe.c 6: {
- hellojoe.c 7: printf("%s\n","Josef Schmidt");
- hellojoe.c 8: }
-
- Kommandozeile zur Aktivierung von CPP als Makro-Präprozessor:
-
- cpp -P- hellojoe.c]
-
- Ausgabe:
- main()
- {
- printf("%s\n","Josef Schmidt");
- }
-
-
- ========================================================================
-
- GREP: Absuchen von Quelltexten
- ------------------------------
-
- GREP (Global Regular Expression Print) ist ein leistungsstarkes
- Zusatzprogramm zum Absuchen von Quelltexten. Es ist eine Version
- des gleichnamigen UNIX-Zusatzprogramms. Das Programm sucht eine
- oder mehrere Textdateien nach vorgebenen Textteilen ab.
-
- Es folgt ein kurzes Beispiel dafür, wann Sie GREP anwenden können.
- Angenommen, Sie möchten wissen, welche Textdateien in Ihrem aktuellen
- Directory den String "Elisabeth" enthalten.
- Sie geben hierfür die Anweisung:
-
- grep Elisabeth *.txt
-
- und GREP antwortet darauf mit einer Liste von Zeilen in jeder Datei,
- die den String "Elisabeth" enthält. Die Strings "elisabeth" und
- "ELISABETH" werden dabei nicht berücksichtigt.
-
- GREP kann jedoch weitaus mehr, als nur einen bestimmten, genau
- beschriebenen String auffinden.
- Im folgenden Abschnitt sehen Sie, wie Sie mit GREP nach einem String
- suchen, der mit einem bestimmten Muster übereinstimmt.
-
-
- Kommandozeilen-Syntax
- Die allgemeine Syntax für GREP ist:
-
- grep [Schalter] Suchstring [Dateispez...]
-
- Ein Schalter besteht aus einem oder mehreren Buchstaben, dem ein
- Bindestrich (SYMBOL -) vorangestellt wird; damit lassen sich ver-
- schiedene Aspekte von GREP ändern.
-
- Suchstring gibt das Muster an, nach dem gesucht wird.
-
- Dateispez (eine Liste von Dateispezifikationen) weist GREP an, in
- welchen Dateien gesucht werden soll. Ist keine Datei angegeben,
- geht GREP nach der Standardeingabe vor.
-
- Zusätzlich erhalten Sie mit dem Befehl
-
- GREP ?
-
- eine kurze Hilfeanzeige am Bildschirm mit den Kommandozeilen-
- Schaltern, speziellen Zeichen und Standardvorgaben. (Siehe die
- Beschreibung des Kommandozeilen-Schalters -u, mit dem Sie die
- Standardvorgabe für GREP ändern.)
-
-
- Die Schalter von GREP
- Die Schalter in der Kommandozeile bestehen aus einem oder mehreren
- Zeichen, dem ein Bindestrich (-) vorangestellt wird. Jedes einzelne
- Zeichen ist ein Schalter, der an- oder ausgeschaltet werden kann.
- Das Pluszeichen (+) nach einem Buchstaben schaltet den betreffenden
- Schalter an, mit einem Minuszeichen (-) wird dieser abgeschaltet.
-
- Die Standardvorgabe ist "+". -r bedeutet also dasselbe wie -r+.
- Sie können mehrere Schalter hintereinander einzeln auflisten
- (z.B.-i-d-l), oder können sie auch kombinieren (z. B.: -ild oder
- -il, -d, usw.); GREP macht da keinen Unterschied.
-
- Die Schalter von GREP sind wie folgt definiert:
-
- Schalter Bedeutung
- =======================================================================
-
- -c count
- Gibt nur die Anzahl von Übereinstimmungen aus. Für jede
- Datei, bei der zumindest in einer Zeile der Suchstring
- vorkommt, wird der Dateiname zusammen mit der Anzahl der
- Übereinstimmungen in Zeilen angegeben, weitere Angaben
- erfolgen nicht.
-
- -d directories
- Dateien werden nicht nur im angegebenen Verzeichnis
- gesucht, sondern auch in allen Subdirectories, die zu
- diesem Directory gehören. Wenn Sie keinen Pfad angeben,
- sucht GREP im aktuellen Directory.
-
- -i ignore case
- GREP behandelt Groß- und Kleinbuchstaben gleich, wobei die
- deutschen Umlaute (wie üblich) nicht mit eingeschlossen
- sind. 'Ä' und 'ä' sind also auch in diesem Fall
- "verschiedene" Zeichen.
-
- -l list
- Wenn der Suchstring innerhalb einer Datei gefunden wird,
- gibt GREP nur den Namen dieser Datei aus und setzt die
- Suche sofort in der nächsten Datei fort.
-
- -n number
- Jede Zeile, in der GREP den Suchstring findet, wird
- zusammen mit ihrer Zeilennummer ausgegeben.
-
- -o output format UNIX
- Paßt die Ausgaben von GREP dem Ausgabeformat von UNIX an.
- Jeder angegebenen Zeile wird der Name der entsprechenden
- Datei vorangestellt.
-
- -r regular expression
- Der durch Suchstring angegebene Text wird nicht als direkte
- Angabe, sondern als regulärer Ausdruck behandelt. Die
- Standardvorgabe bei diesem Schalter ist "an".
-
- -u update options.
- GREP kombiniert die hier angegebenen Schalter mit den
- Standardvorgaben und schreibt eine neue Version von sich
- selbst, die mit diesen Parametern als Standardvorgabe
- arbeitet. Damit läßt sich das Programm jederzeit
- individuell anpassen. Wollen Sie die Voreinstellungen
- sehen, so geben Sie auf der DOS-Ebene den Befehl
-
- GREP ?
-
- ein. Jedem Schalter auf dem Hilfe-Bildschirm folgt ein
- Plus- oder Minuszeichen, je nach seiner Standardvorgabe.
-
- -v vice versa
- Nur Zeilen, in denen GREP den Suchstring nicht findet,
- werden ausgegeben.
-
- -w word search
- Mit dem Suchstring übereinstimmende Zeichenfolgen werden
- nur dann als "gefunden" betrachtet, wenn vor und nach ihnen
- ein Trennzeichen steht. Standardmäßig betrachtet GREP die
- Zeichen A..Z, a..z, 0..9 und den Unterstrich (_) als Teil
- eines Wortes.
-
- Mit einer Angabe der Form -w[Zeichensatz] läßt sich
- festlegen, welche Zeichen GREP als Teil eines Wortes
- betrachten soll. Als Zeichensatz ist jeder reguläre
- Ausdruck zulässig.
-
- Wenn Sie den Zeichensatz als alphabetische Zeichenfolge
- definieren, enthält dieser automatisch alle Groß- und
- Kleinbuchstaben (ganz gleich, wie er eingegeben wird),
- auch bei einer Suche, bei der zwischen Groß- und Klein-
- schreibung unterschieden wird. Wenn Sie den Schalter
- -w in Kombination mit dem Schalter -u verwenden, wird
- der neue Zeichensatz als Standardvorgabe gespeichert.
-
- -z verbose
- GREP gibt bei jeder durchsuchten Datei den Namen sowie die
- Anzahl der gefundenen Zeilen aus, auch wenn die Datei keine
- Übereinstimmungen enthält. Gefundene Zeilen werden mit
- vorangestellter Zeilennummer ausgegeben.
-
-
- Rangfolge der Schalter
- Wie gesagt, ist jede GREP-Option ein Schalter. Er wird in der
- Reihenfolge, in der er gesetzt wurde, bearbeitet. Jeder Schalter
- kann entweder ein- oder ausgeschaltet sein. Jede neue Schalter-
- angabe überschreibt die vorangegangene. Bei folgender Kommando-
- zeile
-
- grep -r -d -i -r- main( my*.c
-
- arbeitet GREP mit eingeschaltetem -d und -i Schalter und ausge-
- schaltetem -r Schalter.
-
- Sie können Standardvorgabe für jeden Schalter in GREP.COM mit dem -u
- Schalter selbst angeben. Wenn GREP immer eine "verbose-Suche" (-z an)
- durchführen soll, können Sie dies mit folgendem Befehl angeben:
-
- grep -u -z
-
-
- Der Wert des Suchstrings definiert ein bestimmtes Muster, nach
- dem GREP suchen soll. Ein Suchstring kann entweder ein regulärer
- Ausdruck oder ein literaler String sein.
-
- Bei einem regulären Ausdruck haben bestimmte Zeichen eine spezielle
- Bedeutung: Sie sind Operatoren und bestimmen die Suche.
-
- In einem literalen String gibt es keine Operatoren: Jedes Zeichen
- wird als direkte Angabe behandelt.
-
- Falls Leerzeichen und Tabulatoren nicht als Trennzeichen interpre-
- tiert werden sollen, müssen Sie den Suchstring in Anführungszeichen
- setzen. Der Suchstring darf nicht über das Zeilenende hinausgehen,
- d.h. der Text, nach dem gesucht werden soll, muß in einer einzigen
- Zeile stehen.
-
- Ein regulärer Ausdruck kann ein einzelnes Zeichen oder eine Zeichen-
- folge sein, die in Klammern steht. Eine Verknüpfung von regulären
- Ausdrücken ergibt wiederum einen regulären Ausdruck.
-
-
- Operatoren bei regulären Ausdrücken
- Wenn Sie mit dem Schalter -r arbeiten (Standardvorgabe an), wird
- der Suchstring als regulärer Ausdruck behandelt (und nicht als
- literaler Ausdruck). Die folgenden Zeichen haben dabei eine
- besondere Bedeutung:
-
- Zeichen Bedeutung
- ======================================================================
-
- ^ steht für den Beginn einer Zeile, wenn es als erstes Zeichen
- des Suchstrings angegeben ist.
-
- $ steht für ein Zeilenende, wenn es als letztes Zeichen des
- Suchstrings angegeben ist.
-
- . steht für ein beliebiges Zeichen.
-
- * steht für eine beliebige Anzahl von Wiederholungen des voran-
- gehenden Zeichens: die Suche nach fo* findet f (0 Wieder-
- holungen von o), fo, foo, fooo usw. - nicht aber fa.
-
- + arbeitet ähnlich wie *, setzt aber mindestens ein Vorkommen
- des vorangehenden Zeichens voraus. Die Suche nach fo+ findet
- fo, foo, fooo usw. - nicht jedoch f.
-
- [ ] ein durch eckige Klammern eingeschlossener String wird als
- Zeichensatz behandelt. Ist das erste Zeichen im String ein
- Zirkumflex (^), entspricht der Ausdruck jedem Zeichen, außer
- den im String vorkommenden Zeichen.
-
- Eine Angabe wie [xyz] sucht nach den Buchstaben x, y und z;
- die Angabe [^xyz] nach sämtlichen Zeichen, außer x, y und
- z. Sie können auch einen bestimmten Zeichenbereich
- spezifizieren, indem Sie zwei Zeichen mit einem Bindestrich
- verbunden als Grenzzeichen angeben. Der Zirkumflex läßt
- sich auch auf Zeichenbereiche anwenden. [^a-f] sucht nach
- sämtlichen Zeichen, außer den Kleinbuchstaben von a bis f,
- [a-bd-z?] nur nach dem Fragezeichen und allen
- Kleinbuchstaben außer c.
-
- \ Das Escape-Zeichen ermöglicht die Suche nach einzelnen Zei-
- chen, die ansonsten speziell interpretiert würden. \. sucht
- in einem Ausdruck nach einem Dezimalpunkt, \$ nach einem
- Dollarzeichen usw.
-
- Hinweis: Vier der "speziellen" Zeichen ($, ., *, and +) haben
- keine bestimmte Bedeutung innerhalb eines Zeichensatzes. Der
- Zirkumflex (^) wird nur dann als Negation gewertet, wenn er
- direkt am Anfang des Zeichensatzes (also direkt nach dem [)
- steht.
-
- Alle in dieser Liste nicht aufgeführten Zeichen werden direkt
- miteinander verglichen (> mit >, # mit #, usw.).
-
-
- Dateinamen
- Dateinamen legen fest, welche Dateien (oder Dateigruppen)
- abgesucht werden sollen.
-
- Dateinamen können explizit angegeben werden oder nach den üblichen
- DOS-Konventionen, also mit Joker oder Fragezeichen. Sie können auch
- mit einem Suchweg und/oder einem Laufwerksbezeichner angegeben werden.
- Bei Dateien ohne Pfadangabe sucht GREP im aktuellen Directory.
-
- Wenn überhaupt kein Dateiname angegeben wird, liest GREP die
- Standardeingabe des Systems (was ohne eine Umleitung der Ein-/
- Ausgabe von DOS nicht allzuviel Sinn hat).
-
-
- Einige Beispiele
- Folgende Beispiele zeigen eine Kombination der Funktionen von
- GREP, um verschiedenartige Suchen auszuführen. Dabei gehen wir
- davon aus, daß die Standardvorgaben nicht verändert wurden.
-
-
- Beispiel 1:
- GREP wird durch einen Suchstring angewiesen, nach dem Wort main
- zu suchen, vor dem keine Kleinbuchstaben stehen dürfen [^a-z], dem
- ein oder mehrere Leerzeichen folgen sollen (\ *) und danach eine
- linke runde Klammer.
-
- Da Leerzeichen und Tabulatoren als Begrenzer von Kommandozeilen
- betrachtet werden, müssen diese in Anführungszeichen stehen, wenn sie
- Teil eines regulären Ausdrucks sein sollen. In unserem Fall ist das
- Leerzeichen nach main durch das Escape-Zeichen explizit angeführt.
- Sie könnten aber auch das Leerzeichen in Anführungszeichen setzen.
-
- Aufruf: grep -r [^a-z]main\ *( *.c
-
- Findet: main(i:integer)
- main(i,j:integer)
- if (main ()) halt;
-
- Findet nicht: mymain()
- MAIN(i:integer);
-
- Sucht in: allen Dateien im aktuellen Directory mit der Extension .C.
-
-
- Beispiel 2:
- Da Backslash (\) und Punkt (.) normalerweise eine besondere Bedeutung
- im Pfad und Dateinamen haben, müssen Sie das Backslash-Escape-Zeichen
- unmittelbar davor setzen, wenn nach diesen Zeichen gesucht werden soll.
- Der Schalter -i wird hier verwendet, damit bei der Suche die Groß- und
- Kleinschreibung außer acht gelassen wird.
-
- Aufruf: grep -ri [a-c]:\\data\.fil *.c *.inc
-
- Findet: A:\data.fil
- C:\Data.Fil
- B:\DATA.FIL
-
- Findet nicht: D:\data.fil
- A:data.fil
-
- Sucht in: allen Dateien im aktuellen Directory mit der
- Extension .C oder .INC.
-
-
- Beispiel 3:
- Hier wird die Suche nach einem bestimmten Wort definiert.
-
- Aufrufe: grep -ri [^a-z]wort[^a-z] *.doc
-
- Findet: jedes Wort muß auf einer eigenen Zeile stehen
- MEIN WORT!
- Wort -- kleinste Einheit der Rede.
- Am Anfang war das WORT, und das WORT war
-
- Findet nicht: Mehrere Worte auf einer Zeile sind nicht erlaubt.
- Nachwort schreibt man richtig so!
-
- Sucht in: allen Dateien im aktuellen Directory mit der Extension .DOC
-
-
- Beispiel 4:
- Hier wird die Suche nach "Wort" definiert.
-
- Aufruf: grep -iw wort *.doc
-
- Findet: jedes Wort muß auf einer eigenen Zeile stehen.
- MEIN WORT!
- Wort -- kleinste Einheit einer Rede
- Am Anfang war das WORT, und
-
- Findet nicht: jedes Dokument beteht aus mindestens 2000 Wörtern
- Er kann Nachwort nicht richtig buchstabieren
-
- Sucht in: allen Dateien im aktuellen Directory mit der Extension .DOC.
-
-
- Beispiel 5:
- In diesem Beispiel wird nach einem String mit Leerzeichen gesucht.
-
- Aufruf: grep "Suchstring mit Leerzeichen" *.doc *.c a:\work\myfile.*
-
- Findet: Das ist ein Suchstring mit Leerzeichen darin.
-
- Findet nicht: DAS IST EIN SUCHSTRING MIT LEERZEICHEN DARIN.
- Ein SUCHSTRING mit Leerzeichen.
-
- Sucht in: in allen Dateien im aktuellen Directory mit der Extension
- .DOC und .C und in MYFILE.* im Directory \WORK im Laufwerk A.
-
-
- Beispiel 6:
- In diesem Beispiel wird nach einem der Zeichen ".:?' gesucht und am
- Ende einer Zeile nach einem Komma.
-
- Dem Anführungszeichen innerhalb eines Bereiches ist ein Escape-Zeichen
- vorangestellt, damit es als normales Zeichen und nicht als Begrenzer
- des Strings behandelt wird. Das $-Zeichen erscheint auch außerhalb des
- angegebenen Strings. Damit wird gezeigt, wie mehrere reguläre Ausdrücke
- zu einem einzigen längeren Ausdruck verkettet werden können.
-
- Aufruf: grep -rd "[ ,.:?'\"]"$ \*.doc
-
- Findet: Er sagte Hallo zu mir.
- Wie geht's?
- Vorausgesetzt, daß wir voraussetzen,
- Ein Beispiel dazu:
- "Manche Leute denken, Computer aber nicht."
-
- Findet nicht: Er sagte "Hallo" zu mir
- Wo gehst Du denn hin? Geht's gut
-
- Sucht in: allen Dateien im Hauptdirectory mit der Extension .DOC
- und allen Subdirectories des aktuellen Laufwerks.
-
-
- Beispiel 7:
- In diesem Beispiel wird die Groß- und Kleinschreibung ignoriert
- und nur die Namen der Dateien ausgegeben, die wenigstens eine
- Übereinstimmung enthalten. In den folgenden drei Aufrufen werden
- unterschiedliche Spezifikationsarten von Mehrfachschaltern gezeigt.
-
- Aufruf: grep -ild " der " \*.doc
- grep -i -l -d " der " \*.doc
- grep -il -d " der " \*.doc
-
- Findet: unter Berücksichtigung der Tatsache, daß
- ...ärgerlich. Der Hauptgrund ...
-
- Findet nicht: Derselbe Fehler wie oben
- Geht nicht, weil das gesuchte Wort fehlt
-
- Sucht in: allen Dateien im aktuellen Directory mit der Extension
- .DOC und in allen Subdirectories des aktuellen Laufwerks.
-
-
- Beispiel 8:
- In diesem Beispiel wird der aktuelle Zeichensatz für ein Wort neu
- definiert und zwar auf das Gleichheitszeichen (=) begrenzt, dann wird
- nach dem Wort gesucht. GREP sucht damit nach den C-Zuweisungen, bei
- welchen ein einzelnes Gleichheitszeichen (=) verwendet wird; die
- Gleichheitstests, bei welchen zwei Gleichheitszeichen (==) verwendet
- werden, werden damit außer acht gelassen.
-
- Aufruf: grep -w[=] = *.c
-
- Findet: i = 5;
- j=5;
- i += j;
-
- Findet nicht: if (i == t) j++;
- /* ======================= */
-
- Sucht in: allen Dateien im aktuellen Directory mit der Extension .C.
-
-
- ========================================================================
-
- OBJXREF: Kreuzreferenzen für Objektmodule erzeugen
- --------------------------------------------------
-
- OBJXREF untersucht eine Liste mit Objekt- und Bibliotheks-Dateien
- und erstellt einen Bericht über deren Inhalt. In einer Berichtsart
- werden die Definitionen globaler Namen und deren Referenzen auf-
- geführt. Eine andere listet die von Objektmodulen definierten
- Segmentgrößen auf.
-
- Es gibt zwei Kategorien von globalen Namen: globale Variablen und
- Funktionsnamen. Die Dateien TEST1.C und TEST2.C im Abschnitt
- "OBJXREF Beispielberichte" enthalten Definitionen von globalen Namem
- und deren externe Referenzen.
-
- Objektmodule sind Objektdateien (.OBJ), die von TC, TCC oder TASM
- erzeugt werden. Eine Bibliotheksdatei (.LIB) enthält mehrere
- Objektmodule. Ein von TC erzeugtes Objektmodul erhält denselben
- Namen wie die Quelldatei .C, aus der es compiliert wurde. Das gilt
- ebenso für TCC, solange mit dem TCC-Kommandozeileparameter -o kein
- anderer Name für die Ausgabedatei ausdrücklich angegeben wird.
-
-
- Der Aufruf von OBJXREF
-
- Der Aufruf von OBJXREF besteht aus dem Wort OBJXREF, gefolgt von
- einer Reihe von Kommandozeilenparametern und einer Liste von Objekt-
- und Bibliotheksdateinamen, die durch ein Leerzeichen oder einen
- Tabulator voneinander getrennt sind. Die Syntax ist:
-
- OBJXREF Optionen Dateiname Dateiname ...
-
- Die Kommandozeilenparameter bestimmen die Berichtsart, die von OBJXREF
- erzeugt wird, sowie die Informationsmenge der Ausgaben von OBJXREF.
- Sie werden im nächsten Abschnitt ausführlicher besprochen.
-
- Jedem Parameter wird ein Schrägstrich (/) vorangestellt, gefolgt von
- einem ein bzw. zwei Zeichen langen Parameternamen.
-
- Die Objekt- und Bibliotheksdateien können entweder in der Kommando-
- zeile oder in einer Eingabedatei spezifiziert werden. In der Kommando-
- zeile werden die Dateinamen durch ein Leerzeichen bzw. einen Tabulator
- voneinander getrennt. Alle Objektmodule, die als .OBJ-Dateien genannt
- sind, werden in den Berichten aufgeführt. Wie TLINK berücksichtigt
- OBJXREF jedoch nur diejenigen Module der .LIB-Dateien, die einen glo-
- balen Namen enthalten, auf den in einer .OBJ-Datei oder in einem vor-
- herigen Modul in der .LIB-Datei Bezug genommen wird.
-
- Generell gilt, daß alle .OBJ- und .LIB-Dateien, die zum korrekten
- Linken eines Programms benötigt werden, zusammen mit der Start .OBJ-
- Datei und einer oder mehreren C-Bibliotheken aufgelistet werden sollen.
-
- Die Dateinamen können eine Laufwerksbezeichnung und einen Directory-
- pfad enthalten. Die DOS-Jokerzeichen ? und * können zur Identifizierung
- mehrerer Dateien verwendet werden. Die Dateinamen können sich auf
- Objektdateien (.OBJ) oder auf Bibliotheksdateien (.LIB) beziehen.
- Wenn keine Dateiextension angebeben wird, wird die Extension .OBJ
- genommen.
-
- Parameter und Dateinamen können in beliebiger Reihenfolge in der
- Kommandozeile erscheinen.
-
- OBJXREF-Ausgaben werden zur DOS-Standardausgabeeinheit geschrieben. Die
- Standardvorgabe ist der Bildschirm. Die Ausgaben können mit dem DOS-
- Umleitungszeichen (>) zum Drucker gesandt werden (mit >LPT1:) oder
- in eine Datei (mit >lstfile).
-
- Die Eingabe OBJXREF ohne Dateinamen oder Parameter erzeugt eine Auf-
- stellung aller verfügbaren Parameter.
-
-
- Der Aufruf von OBJXREF
-
- Die OBJXREF Kommandozeilen-Parameter werden in zwei Kategorien
- eingeteilt: Kontroll-Parameter und Ausgabe-Parameter
-
-
- Die Kontroll-Parameter
-
- Mit den Kontroll-Parametern werden die Standardvorgaben von
- OBJXREF modifiziert (sie sind standardmäßig alle auf "aus" gesetzt).
-
- Parameter Bedeutung
- ======================================================================
-
- /I Unterscheidet bei globalen Namen nicht zwischen Groß- und
- Kleinschreibung. Verwenden Sie diesen Parameter, wenn Sie
- mit TLINK ohne den Parameter /C (der zwischen Groß- und
- Kleinschreibung unterscheidet) arbeiten.
-
- /D Sucht nach .OBJ-Dateien in einem anderen Directory.
- Wenn OBJXREF in einem anderen als dem aktuellen Directory
- suchen soll, geben Sie des Namen des Directories mit
- vorangestelltem /D in der Kommandozeile an.
-
- OBJXREF /Ddir1 [; dir2 [; dir3]]
-
- oder
-
- OBJXREF /Ddir1 [/Ddir2] [/Ddir3]
-
- OBJXREF durchsucht jedes Directory in der angegebenen
- Reihenfolge nach allen Objekt- und Bibliotheksdateien.
-
- Wichtig!
- Wenn Sie nicht mit dem Parameter /D arbeiten, sucht
- OBJXREF nur im aktuellen Directory. Mit dem Parameter
- /D wird jedoch das aktuelle Directory nicht durchsucht,
- solange es nicht in der Directoryliste angegeben ist.
- Wenn OBJXREF beispielsweise zuerst im BORLAND-Directory
- und dann im aktuellen Directory nach Dateien suchen soll,
- müssen Sie
-
- OBJXREF /Dborland;.
-
- eingeben. Der Punkt bezeichnet das aktuelle Directory.
-
-
- /F Alle Objektmodule, die in Bibliotheksdateien (.LIB) ange-
- geben sind, werden aufgeführt, auch wenn sie keine glo-
- balen Namen enthalten, auf die in einem von OBJXREF ver-
- arbeiteten Objektmodul Bezug genommen wird. Damit
- erhalten Sie Informationen über den gesamten Inhalt einer
- Bibliotheksdatei. (Siehe Beispiel 4 im Abschnitt
- "OBJXREF- Beispiele".)
-
- /O Damit können Sie eine Ausgabedatei spezifizieren, in die
- OBJXREF den erzeugten Report ausgibt. Die Syntax ist:
-
- OBJXREF Dateiname.obj /Berichtsoption /Ausgabedateiname.ext
-
- Per Standardvorgabe wird alles auf dem Bildschirm ausgegeben.
-
-
- /V Listet alle gelesenen Dateinamen auf und gibt die Gesamt-
- zahl der gelesenen globalen Namen, Module, Segmente und
- Klassen an.
-
- /Z Schließt Segment-Definitionen der Länge Null mit ein.
- Einige Module der Bibliotheken definieren Segmente ohne
- tatsächlichen Inhalt. Die Namen dieser "Formalsegmente"
- werden normalerweise nicht ausgegeben, um den Bericht
- einigermaßen übersichtlich zu halten.
-
-
- Ausgabe-Parameter
-
- Die Ausgabe-Parameter bestimmen, welche Berichtsart erzeugt wird und
- wie detailliert die ausgegebenen Informationen sind.
-
- Parameter Beschreibung
- =========================================================================
-
- /RC Der Bericht enthält die Modulgrößen nach dem Klassentyp
- der Segmente geordnet.
-
- /RM Globale Namen werden in der Reihenfolge der sie definie-
- renden Module und innerhalb dieser Module alphabetisch
- angeordnet.
-
- /RP Ausgegeben werden sämtliche globale Namen in alphabe-
- tischer Reihenfolge zusammen mit den Namen des Moduls,
- in dem Sie definiert sind.
-
- Die Standardvorgaben:
-
- /RR Ausgegeben werden die tatsächlich verwendeten globalen
- Namen (public-Definitionen), auf die Bezüge existieren.
-
- /RS Ausgegeben werden die Modulgrößen alphabetisch nach
- ihrem Namen geordnet.
-
- /RU Der Bericht führt die globalen Namen, die als public
- deklariert, aber nicht benutzt werden, nach Modulnamen
- geordnet auf.
-
- /RV OBJXREF kombiniert sämtliche zuvor aufgeführten Bericht-
- optionen in einem Bericht.
-
- /RX Der Bericht enthält alle Module, auf die von anderen
- Modulen Bezug genommen wird, geordnet nach den bezug-
- nehmenden Modulen.
-
- Globale Namen in C-Programmen erscheinen in den Berichten mit einem
- führenden Unterstrich, außer wenn der Parameter -U- beim Compilieren
- der Datei nicht angegeben wurde.
-
- Sie können die Ausgabe von Modulen, Segmenten, Klassen und globalen
- Namen einschränken, indem Sie in der Kommandozeile den entsprechen-
- den Namen, angeführt vom Parameter /N, angeben. Zum Beispiel weist
-
- OBJXREF Dateiliste /RM /NC0
-
- OBJXREF an, nur Informationen über das Modul CO auszugeben.
-
-
- Die Eingabedateien
-
- Die Kommandozeile auf DOS-Ebene ist auf 128 Zeichen beschränkt.
- Wenn die Liste Ihrer Optionen und Dateinamen länger ist, müssen
- Sie Ihre Dateinamen in eine Eingabedatei schreiben.
-
- Eine Eingabedatei ist eine mit einem Texteditor geschriebene Textdatei.
- Wenn Sie bereits eine Dateinamenliste für Ihr Turbo C++ Programm vorbe-
- reitet haben, erkennt OBJXREF verschiedene Eingabedateitypen.
-
- Eingabedateien werden in der Kommandozeile mit einem der folgenden
- Parameter aufgerufen. Der Name der Eingabedatei muß direkt nach dem
- Parameter folgen, Leerzeichen zwischen Parameter und Dateinamen sind
- nicht erlaubt (z.B. /Leing und nicht /L eing).
-
- Sie können mehr als eine Eingabedatei in der Kommandozeile spezifi-
- zieren; .OBJ und .LIB-Dateinamen können vorangestellt oder angefügt
- werden.
-
-
- Eingabedateien im freien Format
-
- Mit einem Texteditor können Sie Eingabedateien im freien
- Format erstellen. Listen Sie dafür die Namen aller Objekt- und
- Bibliotheksdateien auf, die Sie zum Erzeugen Ihrer .EXE-Datei
- benötigen.
-
- Jede Datei, die in der Eingabedatei ohne Extension angegeben wird,
- wird als Objektdatei behandelt.
-
- Um Dateien im freien Format mit OBJXREF zu verwenden, geben
- Sie jeden Eingabedateinamen in der Kommandozeile mit einem voran-
- gestellten @ an und trennen sie von anderen Kommandozeileneingaben
- durch ein Leerzeichen oder einen Tabulator:
-
- @Dateiname @Dateiame ...
-
-
- Projektdateien
-
- Sie können auch Projektdateien, die mit der integrierten Umgebung
- von Turbo C++ erzeugt wurden, als Eingabedateien verwenden.
- Stellen Sie dem Projektdateinamen in der Kommandozeile den Parameter
- /P voran, z.B.
-
- /PDateiname
-
- Wenn die Dateinamenangabe keine ausdrückliche Extension enthält, wird
- die Extension .PRJ zugewiesen.
-
- Enthält die Projektdatei Dateinamen mit der Extension .C oder gar
- keiner Extension, werden sie als Spezifizierung der entsprechenden
- .OBJ-Datei angesehen. Sie brauchen die Dateizuordnungen in Klammern
- nicht zu entfernen; diese werden von OBJXREF einfach ignoriert.
-
- Hinweis: In einer Projektdatei spezifiziert die Dateiliste alleine
- noch kein vollständiges Programm -- Sie müssen ebenfalls eine Start-
- datei (C0x.OBJ) und eine oder mehrere Bibliotheksdateien (MATHX.LIB,
- EMU.LIB, und CX.LIB, zum Beispiel) von Turbo C++ angeben. Außerdem
- können Sie mit dem Parameter /D das Directory angeben, in dem
- OBJXREF nach Objektdateien suchen soll.
-
-
- Befehlsdateien des Linkers
-
- OBJXREF kann auch Befehlsdateien bearbeiten, welche für den Linker
- geschrieben wurden. Sie müssen in der Kommandozeile mit /L eingeleitet
- werden, wobei zwischen dem /L und dem Dateinamen kein Leerzeichen
- stehen darf:
-
- /LDateiname
-
- Beispiel 2 im Abschnitt "Einige Beispiele mit OBJXREF" zeigt Ihnen
- die Anwendung dieser Dateien.
-
-
- Beispiel zur OBJXREF-Ausgabe
-
- Angenommen, Sie haben zwei Quelldateien in Ihrem Directory von
- Turbo C++ und möchten mit OBJXREF die compilierten Objektdateien
- ausgeben. Diese Quelldateien sind TEST1.C and TEST2.C und sehen
- folgendermaßen aus:
-
- /* test1.c */
- int i1; /* Definition i1 */
- extern int i2; /* Bezug auf i2 in TEST2.C */
- static int i3; /* kein globaler Name */
- extern void look(void); /* Bezug auf look in TEST2.C */
-
- void main(void) /* Definition von main */
- {
- int i4; /* lokale Variable */
- look(); /* Bezug auf die Funktion look()*/
- }
-
- /* test2.c */
- #include <process.h>
- extern int i1; /* Bezug auf i1 */
- int i2; /* Definition von i2 */
-
- void look(void) /* Definition von look */
- {
- exit(i1); /* Bezug auf exit... */
- } /* und auf i1 */
-
- Die aus diesen Quelldateien compilierten Objektmodule heißen TEST1.OBJ
- und TEST2.OBJ. Sie können OBJXREF anweisen, welche Berichtsart über
- diese Objektdateien ausgegeben werden sollen, indem Sie in der Komman-
- dozeile den Dateinamen, gefolgt vom Parameter /R und einem zweiten
- Parameter, der den Berichtstyp bezeichnet.
-
- Hinweis: Die folgenden Beispiele zeigen nur sinnvolle Teile des
- Berichts.
-
-
- Bericht zu globalen Namen (/@;RP)
-
- Beim Aufruf mit dem Parameter /RP wird jeder globale Name aufge-
- listet, der in den Objektmodulen, die ausgegeben werden, definiert
- ist, gefolgt von dem Namen des Moduls, in welchen er definiert ist.
-
- Bei einem Aufruf wie
-
- OBJXREF /RP test1 test2
-
- erscheint folgender, von OBJXREF erzeugter Bericht:
-
- DEFINED IN
- _i1 TEST1
- _i2 TEST2
- _look TEST2
- _main TEST1
-
-
- Bericht zu Modulen (/@;RM)
-
- Beim Aufruf mit dem Parameter /RM werden alle Objektmodule aufgelistet,
- gefolgt von einem Listing aller darin enthaltenen globalen Namen.
-
- Bei einem Aufruf wie
-
- OBJXREF /RM test1 test2
-
- erzeugt OBJXREF folgende Ausgabe:
-
- MODULE: TEST1 Definition der folgenden Symbole:
- public: _i1
- public: _main
- MODULE: TEST2 Definition der folgenden Symbole:
- public: _i2
- public: _look
-
-
- Bericht zu Bezügen (/@;RR)
-
- Bei diesem Aufruf gibt OBJXREF die Namen aller globalen Namen aus.
- Auf den Namen folgt das Modul, in dem der entsprechende Bezeichner
- definiert ist, darunter die Namen der Module, die auf den jeweiligen
- Bezeichner zugreifen. Dies ist Voreinstellung, wenn keine
- Ausgabeoption definiert ist.
-
- Bei einem Aufruf wie
-
- OBJXREF /RR C0 test1 test2 CS.LIB
-
- erzeugt OBJXREF folgende Ausgabe:
-
- _exit (EXIT)
- C0
- TEST2
- _i1 (TEST1)
- TEST2
- _i2 (TEST2)
- _look (TEST2)
- TEST1
- _main (TEST1)
- C0
-
-
- Bericht zu externen Deklarationen (/RX)
-
- Beim Aufruf mit dem Parameter /RX werden die Namen aller Module
- ausgegeben, die externe Bezüge enthalten.
-
- Bei einem Aufruf wie
-
- OBJXREF /RX C0 test1 test2 CS.LIB
-
- erzeugt OBJXREF folgende Ausgabe:
-
- MODULE: C0 references the following symbols:
- _main
- MODULE: TEST1 references the following symbols:
- _i2
- _look
- MODULE: TEST2 references the following symbols:
- _exit
- _i1
-
-
- Bericht zu Segmentgrößen (/RS)
-
- Beim Aufruf mit dem Parameter /RS gibt OBJXREF die Namen aller
- Segmente des Programms zusammen mit ihrer Größe aus. Für jedes
- Segment wird detailliert angegeben, aus welchen Modulen es sich
- zusammensetzt. Wo kein Anfangswert einem im Segment definiertem
- Symbol zugewiesen wurde, erscheint das Wort "uninitialized". Bei
- Segmenten mit absoluter Adresse in einer .ASM-Datei erscheint
- links der Angabe der Segmentgröße das Flag Abs.
-
- Bei einem Aufruf wie
-
- OBJXREF /RS test1 test2
-
- erzeugt OBJXREF folgende Ausgabe:
-
- These files were compiled using the large memory model.
- (Diese Dateien wurden unter Verwendung des Speichermodells large compiliert.)
-
- TEST1_TEXT
- 6 (00006h) TEST1
- 6 (00006h) total
- TEST2_TEXT
- 10 (0000Ah) TEST2
- 10 (0000Ah) total
- _BSS
- 4 (00004h) TEST1, uninitialized
- 2 (00002h) TEST2, uninitialized
- 6 (00006h) total
-
-
- Bericht zu Klassentypen (/@;RC)
-
- Beim Aufruf mit dem Parameter /RC gibt OBJXREF in alphabetischer
- Reihenfolge der Namen der Segmentklassen die Definitionen der Segment-
- größe aus. Die CODE-Klasse enthält Instruktionen, DATA enthält initia-
- lisierte Daten und BSS nicht initialisierte Daten. Segmente ohne
- Klassentyp-Spezifizierung werden mit der Anmerkung "No class type"
- (Kein Klassentyp) aufgelistet.
-
- Bei einem Aufruf wie
-
- OBJXREF /RC C0 test1 test2 CS.LIB
-
- erzeugt OBJXREF folgende Ausgabe:
-
- BSS
- 4 (00004h) TEST1
- 2 (00002h) TEST2
- ...
- 132 (00084h) total
- CODE
- 6 (00006h) TEST1
- 10 (0000Ah) TEST2
- 16 (00010h) total
- DATA
- 143 (0008Fh) C0
- 143 (0008Fh) total
-
-
- Bericht zu unbenutzten globalen Namen (/RU)
-
- Beim Aufruf mit dem Parameter /RU gibt OBJXREF die Namen aller PUBLIC-
- Bezeichner eines Programms aus, auf die kein Bezug in anderen Modulen
- genommen wird. Ein globaler Name wird im Bericht aufgeführt, wenn eine
- der folgenden Bedingungen erfüllt wird:
-
- Auf die PUBLIC-Definition wird entweder nur innerhalb des definierenden
- Moduls Bezug genommen und bräuchte deshalb nicht als PUBLIC definiert
- werden. (Wenn es sich um ein C-Modul handelt, sollte das Schlüsselwort
- static der Definition hinzugefügt werden; bei einem TASM-Modul entfer-
- nen Sie einfach die PUBLIC-Definition).
- oder
- Sie findet nie Anwendung (könnte deshalb gelöscht werden, um Code bzw.
- Speicherplatz zu sparen).
-
- Bei einem Aufruf wie
-
- OBJXREF /RU test1 test2
-
- erzeugt OBJXREF folgende Ausgabe:
-
- MODULE: TEST2 defines the unreferenced _i2.
-
-
- Bericht zu allem (/RV)
-
- Bei einem Aufruf mit /RV erzeugt OBJXREF jede der oben genannten
- Berichtsarten.
-
-
- Aufrufbeispiele zu OBJXREF
-
- In den folgenden Beispielen wird davon ausgegangen, daß sich
- die Anwendungs-Beispieldateien im aktuellen Directory des
- Standardlaufwerks befinden und die Startup-(C0x.OBJ) und Bibliotheks-
- dateiem im Directory \TURBOC\LIB stehen.
-
- Beispiel 1
-
- C>OBJXREF \turboc\lib\c0l test1 test2 \turboc\lib\cl.lib
-
- In diesem Beispiel werden die Dateien TEST1.OBJ und TEST2.OBJ sowie
- die Startdatei von Turbo C \TURBOC\LIB\C0L.OBJ und die Bibliotheks-
- datei \@;TURBOC\LIB\CL.LIB angegeben. Da kein Ausgabetyp spezifiziert
- ist, verwendet das Programm die Standardvorgabe /RR, d.h. erzeugt ein
- Listing aller PUBLIC-Referenzen.
-
-
- Beispiel 2
-
- C>OBJXREF /RV /Ltest1.arf
-
- Die Antwortdatei von TLINK TEST1.ARF enthält dieselbe Dateiliste
- wie die Kommandozeile in Beispiel 1. Der Parameter /RV ist spezifi-
- ziert, so daß von jeder Berichtsart ein Listing erzeugt wird.
- TEST1.ARF enthält
-
- \turboc\lib\c0l
- test1 test2
- test1.exe
- test1.map
- \turboc\lib\cl
-
-
- Beispiel 3
-
- C>OBJXREF /RC B:c0s /Ptest1 @libs
-
- Die TC-Projektdatei TEST1.PRJ enthält die Angabe TEST1.OBJ und
- TEST2.OBJ. Die Antwortdatei @libs spezifiziert die Bibliotheken auf
- der Diskette im Laufwerk B. TEST1.PRJ enthält
-
- test1
- test2.c
-
- Die Datei LIBS enthält
-
- b:maths.lib b:emu.lib b:cs.lib
-
- Die genannten Start- und Bibliotheksdateien hängen vom Speichermodell
- und den Fließkommaoptionen ab, die beim Compilieren verwendet wurden.
- Beim Aufruf mit /RC werden die Segmentklassen ausgegeben.
-
-
- Beispiel 4
-
- C>OBJXREF /F /RV \turboc\lib\cs.lib
-
- Hier erzeugt OBJXREF einen Bericht über sämtliche in der Turbo C++
- Bibliothek CS.LIB enthaltene Module. (Durch den Parameter /F wird
- OBJXREF in diesem Fall gezwungen, alle in CS.LIB enthaltenen Module
- aufzuführen.)
-
-
-
- Meldungen von OBJXREF
-
- OBJXREF gibt zwei Arten von Meldungen aus: Fehlermeldungen und Warnungen.
-
-
- Fehlermeldungen
-
- Out of memory
- (Nicht genug Speicherplatz)
- OBJXREF hält sämtliche Symbollisten im Hauptspeicher und braucht
- wesentlich mehr Speicherplatz als TLINK. (Wenn Sie diese Meldung
- erhalten, kann es deshalb durchaus sein, daß TLINK noch in der
- Lage ist, die angegebenen Module zu einem Programm zu binden).
- Speicherresidente Programme sollten vorübergehend entfernt werden.
-
-
- Warnungen
-
- WARNUNG: Unable to open input file <filename>
- (Datei <Dateiname> nicht gefunden)
- OBJXREF hat die angegebene Datei nicht gefunden oder war nicht in
- der Lage, sie zu öffnen. Die Arbeit wird mit der nächsten angege-
- benen Datei fortgesetzt.
-
- WARNUNG: Unknown option - <option>
- (Unbekannter Kommandozeilen-Parameter)
- Nach Ausgabe dieser Meldung setzt OBJXREF die Arbeit fort -
- unbekannte Kommandozeilen-Parameter werden ignoriert.
-
- WARNUNG: Unresolved <symbol> in module <module>
- (In Modul <Modul> vorausgesetztes Symbol <Symbol> ist nicht definiert)
- Das PUBLIC-Symbol 'XXXXX' fehlt, d.h. ist in keiner der angegebenen
- Dateien definiert. OBJXREF kennzeichnet fehlende Symbole in jedem
- Listing explizit.
-
- WARNUNG: Invalid file specification <filename>
- (Dateiname <Dateiname> ist ungültig)
- Der angegebene Dateiname entspricht nicht den DOS-Konventionen. Die
- Arbeit wird mit der nächsten angegebenen Datei fortgesetzt.
-
- WARNUNG: No files matching <filename>
- (Keine der Suchmaske <Dateiname> entsprechenden Dateien gefunden)
- Sie haben einen Dateinamen mit Jokerzeichen angegeben, allerdings
- findet OBJXREF keine einzige Datei, die dieser Suchmaske entspricht.
- Die Arbeit wird mit der nächsten angegebenen Datei fortgesetzt.
-
- WARNUNG: <symbol> defined in <module1> duplicated in
- <module2>
- (<Symbol> mehrfach in <Modul1> und in <Modul2> definiert)
- Das Symbol <Symbol> ist in mehr als einem Modul als PUBLIC definiert.
- OBJXREF ignoriert die zweite Definition.
-
-
- ========================================================================
-
- THELP: Das Zusatzprogramm Turbo-Hilfe
- -------------------------------------
-
- THELP.COM ist ein RAM-residentes (TSR) Zusatzprogramm, das auf die
- Hilfeinformationen von Turbo C++ zugreift, wenn sie mit einem anderen
- Editor als mit dem der integrierten Entwicklungsumgebung oder mit
- Turbo Debugger arbeiten.
-
-
- Die Installation von THELP
- Wenn Sie Turbo C++ mit dem INSTALL Installationsprogramm auf Ihrem
- System installieren, sollte THELP.COM bereits in Ihrem Hauptdirectory
- von Turbo C++ stehen. Wenn nicht, kopieren Sie es von der Original-
- diskette in Ihr Hauptdirectory.
-
- Vergewissern Sie sich, daß sich die Textdatei TCHELP.TCH, die die
- Hilfeinformationen von Turbo C++ enthält, im aktuellen Directory
- befindet. Wenn TCHELP.TCH in einem anderen Directory stehen soll,
- kann THELP jederzeit mit dem Kommandozeilen-Parameter /F diese Datei
- finden). Wenn Sie mit INSTALL arbeiten, wird TCHELP.TCH in das
- TURBOC-Directory geschrieben und THELP erhält automatisch die
- Mitteilung, wo es danach zu suchen hat.
-
- Die Größe des Speicherplatzes hängt davon ab, ob Sie mit einer
- Swapdatei arbeiten, um Speicherplatz zu sparen. Wenn Sie mit einer
- Swapdatei arbeiten wollen, besetzt THELP in aktivem Zustand 8K des
- Speichers und zusätzlich 32K für die Swapdatei. Wenn Sie THELP
- ohne Swapdatei benutzen, benötigt es immer 40K.
-
-
- THELP laden und aktivieren
-
- Achtung! Wenn Sie THELP gleichzeitig mit SideKick 1.x bzw. SideKick
- Plus benutzen, müssen Sie zuerst THELP und danach SideKick laden.
-
- Damit Sie THELP von jeder anderen Anwendung aus aufrufen können, müssen
- Sie es in den RAM-Speicher laden. Geben Sie dazu THELP auf der DOS-Ebene
- ein, bevor Sie eine andere Anwendung aufrufen. Sie müssen diesen Schritt
- nur einmal nach dem Booten ausführen.
-
- Sobald Sie in einer anderen Anwendung sind, können Sie THELP jeder-
- zeit aktivieren, indem Sie den Cursor auf die Funktion setzen, über
- die Sie eine Information möchten, danach drücken Sie die THELP-Taste.
- THELP ist per Vorgabe der Taste 5 des numerischen Tastaturblocks
- (scan code 4ch, shift state 00h) zugeordnet.
-
- Hinweis: Wenn Sie THELP auf einem ATT6300 benutzen, müssen Sie mit dem
- Parameter /L25 arbeiten, wie in Abschnitt "Zusammenfassung der THELP
- Kommandozeilen-Parameter" in diesem Kapitel und in der Datei THELP.DOC
- beschrieben.
-
-
- Die THELP-Tasten
-
- Mit den folgenden Tasten bewegen Sie den Cursor im Hilfe-Bildschirm,
- den THELP auf Ihren Bildschirm ausgibt:
-
- Taste Beschreibung
- ======================================================================
-
- Auf Ab Bewegt die Hervorhebung von Schlüsselwort zu Schlüssel-
- Rechts Links wort innerhalb des aktuellen Hilfe-Bildschirms.
-
- PgUp/PgDn Zeigt den nächsten bzw. vorigen Bildschirm an, sofern
- zusätzliche Bildschirmseiten vorhanden sind.
-
- Enter Zeigt zusätzliche Hilfeinformationen zum hervorgehobe-
- nen Schlüsselwort des aktuellen Hilfe-Bildschirms an.
-
- Esc Verläßt den Hilfe-Bildschirm.
-
- F1 Aktiviert den Hilfeindex. Wenn Sie bei angezeigtem
- Hilfe-Bildschirm F1 drücken, erscheint der Hilfeindex.
-
- Alt-F1 Wenn Sie Alt-F1 wiederholt drücken, können Sie
- die letzten 20 Bildschirmanzeigen in umgekehrter
- Reihenfolge sehen.
-
- Ctrl-F1 Läßt den Hilfe-Bildschirm mit den Befehlstasten von
- THELP erscheinen.
-
- F Damit können Sie TCHELP.TCH durch eine neue Hilfedatei
- ersetzen. Wenn Sie die F- Taste drücken, erscheint ein
- Dateneingabefeld, in dem Sie neue Hilfedateien
- angeben können. Geben Sie den vollständigen Pfad-
- namen der neuen Hilfedatei an, und drücken Sie ENTER.
- Wenn die neu eingegebene Hilfedatei nicht existiert
- oder ein ungültiges Format hat, ertönt zweimal ein
- Signal, und THELP benutzt weiter die ursprüngliche
- Datei.
-
- J Springt zur angegebenen Seite der Hilfedatei.
- Es erscheint ein Dateneingabefeld, in das Sie die
- Nummer einer beliebigen Seite (von 1 bis 9999) der
- Hilfedatei eingeben können. Die einzige Editier-
- Taste, die Sie im Dateneingabefeld verwenden können,
- ist die Backspace-Taste. Mit Esc heben Sie Ihre Wahl
- auf. Mit Enter bzw. der Eingabe von vier Ziffern
- führen Sie den Sprung zur angegebenen Seite aus.
-
- Hinweis: THELP zeigt immer die interne Seitenzahl am
- oberen Rand des Hilfe-Bildschirms an. Sie werden bald
- die Seitenzahlen jedes einzelnen Bildschirms auswendig
- kennen, so daß Sie sie mit dem J-Befehl aufrufen
- können.
-
- K Durchsucht die Hilfedatei nach bestimmten
- Schlüsselwörtern. Nach dem Drücken der K-Taste
- erscheint ein Eingabefeld, in das Sie ein
- Schlüsselwort (bis zu 40 Zeichen) eingeben können. Mit
- ENTER veranlassen Sie THELP, die Hilfedatei nach dem
- entsprechenden Begriff zu durchsuchen. Wird in der
- aktuellen Hilfedatei das Schlüsselwort nicht
- gefunden, ertönt zweimal ein Signal, und THELP kehrt
- zum vorherigen Hilfe-Bildschirm zurück.
-
- I Kopiert das aktuell hervorgehobene Schlüsselwort vom
- Hilfe-Bildschirm in Ihre aktuelle Anwendung. Danach
- verschwindet der Hilfe-Bildschirm.
-
- P Kopiert die ganze Seite des Hilfe-Bildschirms (wie
- sie im Hilfe-Fenster erscheint) in Ihre aktuelle
- Anwendung. Danach verschwindet der Hilfe-Bildschirm.
- Mit Ctrl-C bzw. Ctrl-Break können Sie den Vorgang un-
- terbrechen.
-
- S Speichert den aktuellen Hilfe-Bildschirm in eine Datei
- (THELP.SAV). Drücken Sie S immer dann, wenn Sie die
- aktuelle Hilfe-Bildschirmseite in der Datei
- THELP.SAV im aktuellen Directory zu speichern. Wenn
- die Datei bereits existiert, wird die neue Hilfeinfor-
- mation am Ende angehängt.
-
- Befehlstaste Wenn Sie THELP mit einem zweiten Monitor laufen lassen
- und die Befehlstasten bzw. Tastenkombination
- drücken, um THELP zu aktivieren, wird die aktuelle
- Hilfesitzung beendet, der aktuelle Hilfe-Bildschirm
- bleibt jedoch auf dem zweiten (monochrom) Monitor.
- THELP ist per Vorgabe der Taste 5 auf dem numerischen
- Tastenblock zugeordnet.
-
-
- Zusammenfassung der Kommandozeilen-Parameter von THELP
-
- Die Syntax zum Laden von THELP ist:
-
- THELP Parameter
-
- Wenn Sie mehr als einen Parameter verwenden, müssen diese durch
- Leerzeichen voneinander getrennt sein.
-
- Parameter Beschreibung
- =====================================================================
-
- /B BIOS bei Video-Anzeige verwenden
-
- /C#xx Wahl der Farbe:
- # = Nummer des Elements
- xx = hexadezimale Farbwerte
-
- /Dname Vollständige Pfadangabe bei Disk-Swapping (impliziert /S1)
-
- /Fname Vollständige Pfad- und Dateinamenangabe bei der Hilfedatei
-
- /H, /?,? Hilfe-Bildschirm anzeigen
-
- /Kxxyy Befehlstaste ändern:
- xx = shift state(hex)
- yy = scan code(hex)
-
- Lxx Anzahl von Bildschirmzeilen ändern:
- xx = 25,43,50
-
- /M+, /M- Hilfetext ausgeben:
- auf monochromem Bildschirm (+)
- auf Standard-Bildschirm (-)
-
- Die Vorgabe für die Einfügegeschwindigkeit ist 'schnell'. Sie müssen
- ausprobieren, ob dies für Ihren Editor günstig ist. Bevor Sie die Einfügen-
- funktion verwenden, müssen Sie 'autoindent' in der integrierten Entwick-
- lungsumgebung auf aus setzen.
-
- /Px Einfügegeschwindigkeit:
- 0 = langsam
- 1 = mittel
- 2 = schnell (Standard)
- 2 = schnell (Standard)
-
- /R Parameterübergabe an das residente THELP
-
- /Sx Standardvorgabe für den Swapping-Modus:
- 1 = Festplatte/Diskette verwenden
- 2 = EMS verwenden
- 3 = kein Swapping
-
- /U Entfernen von THELP aus dem Speicher
-
- /W Übergibt Parameter an THELP.COM und beendet das Programm
-
-
-
- /B (BIOS bei Video-Anzeige benutzen)
-
- Wenn Sie diesen Parameter setzen, arbeitet THELP bei allen Schreib-
- und Leseoperationen auf bzw. vom Bildschirm mit den Interrupt 10h
- BIOS Aufrufen. Normalerweise schreibt THELP direkt in den Video-
- (RAM)-Speicher.
- Diese Option negiert den Effekt des Schalters /M ; der zweite
- Monitor wird nicht benutzt, wenn /B angeschaltet ist. Die Option
- wird mit /B+ aktiviert (Standardvorgabe), mit /B- deakaktiviert.
-
-
- /C#xx (Farbwahl)
-
- Mit dieser Option können Sie die Vorder- und Hintergrundfarben der
- verschiedenen Elemente in einem Hilfe-Bildschirm anpassen. Der
- Option /@;C folgt die Nummer des Elements, das Sie anpassen wollen
- und die hexadezimalen Farbwerte für den entsprechenden Vorder-
- und Hintergrund.
- Es gibt acht mögliche Elemente, für welche Sie die Vorder- und
- Hintergrundfarben ändern können. Sie sind wie folgt numeriert:
-
- Nummer Element
- ==========================================================================
-
- 1 Farbe - Normaltext
- 2 Schwarz-weiß - Normaltext
- 3 Farbe - mögl. Referenzseiten (Meldezeile am oberen/unteren
- Bildschirmrand)
- 4 Schwarz-weiß - mögl. Referenzseiten (Meldezeile am
- oberen/unteren Bildschirmrand)
- 5 Farbe - Bildschirmrand
- 6 Schwarz-weiß - Bildschirmrand
- 7 Farbe - aktueller Referenzabschnitt
- 8 Schwarz-weiß - aktueller Referenzabschnitt
-
- Sie können eines oder alle dieser Elemente in der Kommandozeile
- spezifizieren.
-
- Die Farbwerte für die vorgegebene IBM-kompatible Farbanzeige sind
- folgende:
-
- Erste Ziffer (Hintergrund) Zweite Ziffer (Vordergrund)
- ==========================================================================
-
- 0 Schwarz 0 Schwarz
- 1 Blau 1 Blau
- 2 Grün 2 Grün
- 3 Cyan 3 Cyan
- 4 Rot 4 Rot
- 5 Magenta 5 Magenta
- 6 Braun 6 Braun
- 7 Grau 7 Grau
- 8 Intensives Schwarz
- ODER- Verknüpfung es Farbenwerts 9 Intensives Blau
- mit Hex 80 verursacht eine blin- A Intensives Grün
- kende Farbe, soweit 'Blinken' B Intensives Cyan
- nicht deaktiviert wurde. C Intensives Rot
- D Intensives Magenta
- E Intensives Braun (Gelb)
- F Intensives Grau (Weiß)
-
- Bei schwarz-weiß Bildschirmen können die Attribut-Werte stärker
- voneinander abweichen, so daß Sie damit herumexperimentieren müssen.
- Beachten Sie, daß die Attribute für schwarz-weiß Bildschirme nur
- in zwei Fällen Anwendung finden: Wenn der aktuelle Videomodus 7
- verwendet oder Monochrom-Anzeige erzwungen wird (siehe "Der Parameter /M").
-
-
- /Dname (Vollständige Pfadangabe bei Disk-Swapping)
-
- Verwenden Sie diese Option, um anzugeben, wo THELP Swapdateien plazieren
- soll, wenn sie auf Platte ausgelagert werden. Es wird davon ausgegangen,
- daß der Schalter /S auf 1 gesetzt ist (d.h. Swapping auf Platte). Ein
- vollständiger Pfad sollte angegeben werden, jedoch ist ein führender
- Backslash (\) nicht erforderlich. Wenn der Parameter /D nicht angegeben
- ist, werden unter DOS 3.x die Swapdateien im Directory von THELP.COM
- plaziert. Unter DOS 2.x stehen sie standardmäßig in C:\.
-
- Mit dieser Option wird außerdem ein Flag gesetzt, das das Swappen auf
- Platte forciert, ansonsten würde zuerst nach EMS gesucht.
-
-
- /Fname (Vollständige Pfad- und Dateinamenangabe bei der Hilfedatei)
-
- Nach dem Parameter /F sollte der vollständige Name der Hilfedatei,
- d.h. mit Laufwerk, Pfad und Directory angegeben werden:
-
- THELP /FC:\TP\TURBO.HLP
- THELP /FC:\TURBOC\TCHELP.TCH
-
- Standardmäßig sucht THELP im aktuellen Laufwerk und Directory nach der
- Hilfedatei.
-
-
- /H, /?, and ? (Hilfe-Bildschirm anzeigen)
-
- Jede dieser Optionen bringt eine Zusammenfassung der Kommandozeilen-
- Parameter von THELP auf den Bildschirm.
-
-
- /Kxxyy (Befehlstaste neu zuweisen)
-
- Mit dieser Option weisen Sie einer bestimmten Taste eine Funktion
- zu. Drücken Sie dazu zuerst die Shift-Taste in Kombination mit
- einer Taste Ihrer Wahl. Es kann jede beliebige Taste in Kombi-
- nation mit der Shift-Taste verwendet werden. Es folgt eine Auflistung
- der gebräuchlisten Tastenkombinationen:
-
- Shift-Tasten (können mit ODER verbunden werden)
-
- rechte Shift- Taste 01h
- linke Shift-Taste 02h
- Ctrl 04h
- Alt 08h
-
- Scan codes:
-
- A 1eh N 31h 0 0bh F1 3bh
- B 30h O 18h 1 02h F2 3ch
- C 2eh P 19h 2 03h F3 3dh
- D 20h Q 10h 3 04h F4 3eh
- E 12h R 13h 4 05h F5 3fh
- F 21h S 1fh 5 06h F6 40h
- G 22h T 14h 6 07h F7 41h
- H 23h U 16h 7 08h F8 42h
- I 17h V 2fh 8 09h F9 43h
- J 24h W 11h 9 0ah F10 44h
- K 25h X 2dh
- L 26h Y 15h
- M 32h Z 2ch
-
- Nur bei neueren Tastaturen (funktioniert nicht mit allen Computern
- bzw. Tastaturen):
-
- F11 57h
- F12 58h
-
-
- /Lxx (Anzahl von Bildschirmzeilen)
-
- Mit dieser Option können Sie die Anzahl von Zeilen angeben, die bei der
- Ausgabe erscheinen sollen. (für xx geben Sie 25, 43 oder 50 ein). Dies
- ist manchmal erforderlich, da bei einigen Videoadaptern die Anzahl von
- Bildschirmzeilen nicht im selben BIOS Datenbereich gespeichert werden,
- wie für den IBM PC definiert. Durch diese Option verwendet THELP
- den angegebenen Wert, anstelle der von BIOS ausgegebenen Zahl.
-
-
- /M+ and /M- (Hilfetext anzeigen)
-
- Benutzer eines Systems mit zwei Bildschirmen, können diese Option
- verwenden, um THELP anzuweisen, den zweiten (schwarz-weiß) Bildschirm
- anstatt den Farbbildschirm zu benutzen. Die Ausgabe auf einem schwarz-
- weiß Bildschirm wird mit /M+ aktiviert (die Standardvorgabe) und mit
- /M- deaktiviert.
-
- Beachten Sie, daß /M mit /B nicht kompatibel ist.
-
- /Px (Einfügegeschwindigkeit)
-
- Mit dieser Option läßt sich die Geschwindigkeit angeben, mit der
- die Zeichen in den Tastaturpuffer eingefügt werden (0 steht für
- langsam, 1 für mittel und 2 für schnell).
-
- Bei einigen Editoren können Zeichen nicht so schnell in den
- Tastaturpuffer eingefügt werden wie mit THELP. Wenn Sie jedoch
- die entsprechende Einfügegeschwindigkeit angeben, können Sie
- praktisch jede Editorkonfiguration verwenden. Bei Wahl der Geschwin-
- digkeit 'schnell' werden so viele Zeichen wie möglich pro Zeitzähl-
- einheit eingefügt,; 'mittel' fügt bis zu vier Zeichen pro Zähleinheit
- ein; und 'langsam' fügt nur dann ein Zeichen in den Puffer ein,
- wenn dieser leer ist.
-
- /R (Parameterübergabe an das residente THELP)
-
- Die Option /R übergibt Parameter (wie beispielsweise neue Farbwerte
- oder Befehlstasten) an den residenten Teil von THELP. Das gilt für alle
- Kommandozeilen-Parameter von THELP, außer für den Swap-Modus, der
- nicht modifiziert werden kann, sobald er von THELP initialisiert wurde.
-
- In Kombination mit diesen Optionen können Sie eine Batchdatei
- erzeugen, die die Konfiguration von THELP ändert, sobald Sie
- den Editor wechseln, z. B.:
-
- THELP /M /P0 /FC:\TP\TURBO.HLP /R}
-
- Dieser Befehl weist THELP an, einen schwarz-weiß Bildschirm, die
- Einfügegeschwindigkeit 'langsam' und die Hilfedatei von Turbo Pascal
- zu verwenden. Die Optionen werden nicht auf Platte gespeichert.
-
- THELP /P2 /FC:\TC\TCHELP.TCH /R}
-
- Mit diesem Befehl wird THELP angewiesen, den Standardbildschirm,
- die Einfügegeschwindigkei 'schnell' und die Hilfedatei von Turbo C++
- zu verwenden. Die Optionen werden nicht auf Platte gespeichert.
-
-
- /Sx (Standardvorgabe des Swapping-Modus)
-
- Mit dieser Option können Sie bestimmen, ob THELP mit der Swap-
- datei arbeiten und wo die Swapdatei stehen soll. (1 steht für
- Platte, 2 für EMS und 3 für keine Swapdatei)
-
- Wenn Sie den Parameter /S nicht setzen, testet THELP zuerst, ob
- das System über einen EMS-Speicher verfügt. Verfügt es über eine
- Speichererweiterung und kann genug Speicherkapazität zugewiesen
- werden, greift THELP auf EMS zu. Ist EMS nicht verfügbar, greift THELP
- auf die Platte zu. Lesen Sie im Abschnitt "Der Parameter /D" nach,
- wohin die Swapdatei geschrieben wird, wenn Disk-Swapping verwendet wird.
-
-
- /U (THELP aus dem Speicher entfernen)
-
- Diese Option entfernt THELP aus dem Speicher. Wenn andere Anwen-
- dungen nach THELP geladen wurden, müssen diese vor THELP aus dem
- Speicher entfernt werden.
-
-
- /W (übergibt Parameter an THELP.COM und beendet das Programm)
-
- Mit dem Parameter /W können Sie eine neue THELP-Version erstellen,
- die Ihre Optionen als Standardoptionen verwendet. Alle Optionen,
- außer dem Parameter /R, können spezifiziert und als permanent ab-
- gespeichert werden.
-
-
- ========================================================================
-
- TRIGRAPH: Programm zur Zeichenkonvertierung
- -------------------------------------------
-
- Trigraphs sind Sequenzen von drei Zeichen, die bestimmte Zeichen
- der Programmiersprache C ersetzen, die auf einigen Tastaturen
- nicht vorhanden sind. Wenn Trigraphs vom Compiler selbst über-
- setzt würden, würde die Compilierung verhältnismäßig lange dauern,
- daher verfügt Turbo C++ zur Handhabung von Trigraph-Sequenzen über
- den Filter TRIGRAPH.EXE. Dieses Programm wird folgendermaßen
- aktiviert:
-
- TRIGRAPH [-u] Dateiname [Dateiname...]
-
- Die folgende Tabelle zeigt die Trigraph-Sequenzen, die
- TRIGRAPH.EXE erkennt:
-
- Trigraph Zeichen
- ================================
-
- ??= #
- ??( [
- ??/ \
- ??) ]
- ??' ^
- ??< {
- ??! |
- ??> }
- ??- ~
-
- TRIGRAPH.EXE arbeitet auf zwei verschiedene Arten: Es konvertiert
- alle Drei-Zeichen-Darstellungen in die entsprechende Ein-Zeichen-
- Darstellungen und umgekehrt. Normalerweise konvertiert TRIGRAPH.EXE
- eine Drei-Zeichen-Darstellung in ein einzelnes Zeichen. Sie können
- mit Hilfe des Kommandozeilen-Parameters -u (UNDO), der vor allen
- Dateinamen stehen muß, die inverse Konvertierung spezifizieren.
-
- TRIGRAPH.EXE arbeitet mit beliebig vielen Dateibezeichnern, inklusive
- Jokern. Für jede angegebene Datei wird ein Backup mit dem Namen der
- Originaldatei und der Extension .BAK erstellt und eine neue Datei mit
- dem Namen der Originaldatei und den entsprechenden Konvertierungen.
- Zum Beispiel werden mit
-
- trigraph test.c test1.c
-
- alle Drei-Zeichen-Darstellungen aus den beiden Dateien TEST.C und
- TEST1.C entfernt und die Backup-Dateien TEST.BAK und TEST1.BAK erzeugt.
-
- In einem weiteren Beispiel wird mit dem folgenden Befehl die Drei-
- Zeichen-Darstellung in alle Dateien mit der Extension .C eingefügt und
- von allen Dateien Backups mit der Extension .BAK erzeugt.
-
- trigraph -u *.c
-
-
- ========================================================================
-
- PRJCNVT: Konvertierung von Projektdateien
- -----------------------------------------
-
- PRJCNVT Konvertiert Projektdateien früherer Turbo C Versionen
- (1.0, 1.5 oder 2.0) in das Turbo C++ Format.
-
- Syntax:
-
- PRJCNVT Eingabedatei[.prj] [Ausgabedatei[.prj]]
- oder
- PRJCNVT Eingabedatei[.tc] [Ausgabedatei[.prj]]
-
- Eine Konfigurationsdatei, welche Sie als Eingabedatei angeben, muß
- eine entsprechende Projektdatei definieren. Die Compileroptionen sowie
- die Information über die Abhängigkeiten zwischen den Modulen des
- Projekts werden in die Turbo C++ Projektdatei übernommen.
-
- Verwenden Sie eine Projektdatei als Eingabe, so wird lediglich die
- Information über die Abhängigkeiten zwischen den Modulen in die Turbo
- C++ Projektdatei übernommen. Alle Compileroptionen bleiben jedoch
- unverändert.
-
- Wenn Sie keine Extension angeben, gilt .TC als Voreinstellung. Falls
- PRJCVNT keine .TC Datei finden kann, sucht es nach einer .PRJ Datei.
-
- Voreinstellung für die Ausgabedatei ist der Name der Eingabedatei mit
- der Extension .PRJ. Aus STARS.TC zum Beispiel wird STARS.PRJ. Wenn die
- Namen der Ein- bzw. Ausgabedatei gleich sind, wird die Eingabedatei
- umbenannt in .BAK.
-
- ========================================================================