Arbeiten mit den Beispiel-Programmen der Kapitel 1 bis 8 ======================================================== Die Programme der Kapitel 1 bis 7 entsprechen der ANSI-Norm und sollten von jedem normgerechten C-Compiler uebersetzt werden koennen. Die Programme des Kapitels 8 demonstrieren betriebssystem- und compiler- abhaengige Besonderheiten. Deshalb sind verschiedene Varianten verfuegbar, die jeweils bei den nachfolgenden Hinweisen zum Arbeiten mit speziellen Compilern aufgelistet werden. UNIX: ----- Die Programme der Kapitel 1 bis 7 duerften mit allen einschlaegigen Compilern, die von der UNIX-Kommandozeile aus gestartet werden, zu uebersetzen sein. Fuer das Kapitel 8 beruecksichtigen die folgenden Programme die Besonderheiten dieses Betriebssystems: dirent1.c inode.c dirent2.c mkpath.c lsubdir.c lst.c lstsort.c Arbeiten mit integrierten Entwicklungsumgebungen unter Windows 3.1, Windows 95 und Windows NT ------------------------------------------------------------------- Wenn eine integrierte Entwicklungsumgebung verfuegbar ist, sollte man sie auch fuer das Arbeiten mit den Programmen der Kapitel 1 bis 8 bereits nutzen, weil es eine gute Uebung fuer die spaetere Windows- Programmierung ist. Trotzdem werden nachfolgend auch Hilfen fuer das Arbeiten von der Kommandozeile unter DOS bzw. im DOS-Fenster gegeben. Arbeiten mit MS-Visual-C++ 1.5 auf der DOS-Befehlsebene: -------------------------------------------------------- Man beachte, dass Compiler und Linker erreichbar sein muessen (stehen ueblicherweise im Directory \MSVC\BIN, das also im PATH verzeichnet sein muss). Ausserdem muessen einige Umgebungsvariablen gesetzt sein, damit zum Beispiel die Standard-Include-Dateien zu finden sind. Alles dies erreicht man zum Beispiel durch Starten der Batchprocedure MSVCVARS.BAT (wird mit MS-Visual-C++ 1.5 geliefert und steht vermutlich auch im Directory \MSVC\BIN). Die Programme der Kapitel 1 bis 7 duerften problemlos zu uebersetzen sein. Fuer das Kapitel 8 beruecksichtigen die folgenden Programme die Besonderheiten dieses Compilers bzw. Betriebssystems: mdirent2.c mkdpath.c mlsubdir.c mlst.c mlstsort.c Arbeiten mit der integrierten Entwicklungsumgebung von MS-Visual-C++ 1.5 unter Windows 3.1: ------------------------------------------------------ Empfehlung: In der "Visual workbench" wird ein "Project" vom Typ "QuickWin application" kreiert (detailiierte Befehlsfolge siehe weiter unten). In der Edit-Dialog-Box sind die gewuenschten *.c-Dateien zum Projekt hinzuzufuegen (in der Regel ist das nur eine Datei). Mit folgenden Befehlen von der "Visual workbench" kann z. B. das ausfuehrbare Programm zum Quellprogramm hptokw01.c (Abschnitt 3.5) erzeugt werden: * Project ---> New ---> Browse, * Directory einstellen, in dem sich hptokw01.c befindet, * Browse-Dialog-Box schliessen ("--" und "Schliessen"), * in der "New Project"-Dialog-Box wird im Feld "Project Name:" hptokw01 eingetragen, * in der Box "Project Type" wird das Angebot QuickWin application (.EXE) ausgewaehlt, * "New Project"-Dialog-Box ueber OK verlassen, * in der Edit-Dialog-Box wird im "File Name:"-Fenster die Datei hptokw01.c ausgewaehlt und mit dem "Add"-Button in das Feld "Files in Project" uebernommen, * ueber den Button "Close" wird die Edit-Dialog-Box verlassen, * Project ---> Rebuild All HPTOKW01.EXE, und Compiler und Linker erzeugen das ausfuehrbare Programm, * Project ---> Execute HPTOKW01.EXE, und in einem Fenster laeuft die QuickWin application HPTOKW01. Folgende Besonderheiten sind zu beachten: # Die "Escape-Sequenzen", mit denen die Funktion clscrn.c (Abschnitt 3.12) versucht, den "Bildschirm zu loeschen", sind in Windows- Applikationen obsolet (das Fenster, in dem das Programm ablaeuft, wird ohnehin erst erzeugt und ist damit leer). Weil die Escape- Sequenzen als "haessliche Zeichen" im Fenster erscheinen, sollten entweder die beiden printf-Anweisungen aus der Funktion clscrn "herauskommentiert" oder die clscrn-Aufrufe aus den Programmen valtab05.c, valtab06.c, valtab07.c und valtab08.c herausgenommen werden. # Das Programm syscall.c (Abschnitt 3.15) kann nicht als "QuickWin application" erzeugt werden, weil die C-Funktion system unter Windows nicht verfuegbar ist. # Programme, die Parameter aus der Kommandozeile erwarten, koennen ueber den Programm-Manager gestartet werden: Im Menue "Datei" wird "Ausfuehren..." gewaehlt. In der "Ausfuehren"-Dialog-Box kann dann die komplette Kommandozeile eingegeben werden. Fuer das Kapitel 8 beruecksichtigen die folgenden Programme die Besonderheiten dieses Compilers bzw. Betriebssystems: mdirent2.c mkdpath.c mlsubdir.c mlst.c mlstsort.c Das Erzeugen einer Library wird am Beispiel der Library libpriv.lib beschrieben: * Project ---> New ---> Browse, * Directory einstellen, in dem die *.c-Funktionen gespeichert sind, * Browse-Dialog-Box schliessen ("--" und "Schlieen"), * in "New Project"-Dialog-Box im Feld "Project Name:" libpriv eintragen, * in der Box "Project Type" das Angebot Static library (.LIB) auswaehlen, * "New Project"-Dialog-Box ueber OK verlassen, * in Edit-Dialog-Box im "File Name:"-Fenster auf die Dateinamen doppelklicken, die in die Library eingefuegt werden sollen, sie erscheinen im Fenster "Files in Project", * ueber Button "Close" die Edit-Dialog-Box verlassen, * Project ---> Rebuild All LIBPRIV.LIB, und die Library wird erzeugt. Wenn in einem Projekt Objektmoduln aus einer Library verwendet werden sollen, ist diese zusaetzlich zu den *.c-Files in der Edit-Dialog-Box dem Projekt hinzuzufuegen (um sie im Fenster "File Name" ueberhaupt sichtbar zu machen, muss gegebenenfalls ueber "List Files of Type:" die Auswahl Library (*.lib) getroffen werden). Arbeiten mit Turbo-C++ fuer DOS: -------------------------------- Man beachte, dass Compiler und Linker erreichbar sein muessen, was ueblicherweise schon bei der Installation von Turbo-C vorbereitet wird (Erweitern des PATH und Setzen der erforderlichen Umgebungsvariablen). Die Programme der Kapitel 1 bis 7 duerften problemlos zu uebersetzen sein. Fuer das Kapitel 8 beruecksichtigen die folgenden Programme die Besonderheiten dieses Compilers bzw. Betriebssystems: tdirent2.c mkdpath.c tlsubdir.c tlst.c tlstsort.c Arbeiten mit der integrierten Entwicklungsumgebung von Turbo-C++ fuer Windows 3.1: ------------------------------------------------------ In der Entwicklungsumgebung von Turbo C++ fuer Windows wird ein Projekt erzeugt, in das die *.c-Dateien (in der Regel ist es nur eine) eingefuegt werden. Im Menue-Angebot "Compiler" wird mit "Alle Projekt-Dateien compilieren" das Programm erzeugt. Mit folgenden Befehlen aus der Turbo-C++-Entwicklungsumgebung kann z. B. das ausfuehrbare Programm zum Programm hptokw01.c (Abschnitt 3.5) erzeugt werden: * Projekt ---> Projekt oeffnen..., * in der "Projektdatei oeffnen"-Dialog-Box in das Directory wechseln, in dem das Programm hptokw01.c gespeichert ist, * im Feld "Dateiname" hptokw01.prj eintragen, Button OK anklicken, * Projekt ---> Datei einfuegen ..., * in der Dialog-Box "In Projektliste aufnehmen" im Feld "Dateiname" *.c eintragen, Return-Taste druecken, * im Fenster "Dateien" hptokw01.c auswaehlen, mit Klick auf den "Einfuegen"-Button dem Projekt hinzufuegen, * Button "Komplett" anklicken, * Optionen ---> Projekt aktualisieren ..., * im Fenster "Nach Compilierung" wird (falls nicht bereits eingestellt) das Angebot Linker starten auswaehlen, Button OK druecken, * Compiler ---> Alle Projekt-Dateien compilieren, und Compiler und Linker erzeugen das ausfuehrbare Programm hptokw01.exe, Button "OK" anklicken. Die vom Linker erzeugte Warnung "No module definition file specified; using defaults" kann ignoriert werden. Das Programm kann aus der Entwicklungsumgebung gestartet werden: * Start ---> Ausfuehren, und in einem sich automatisch oeffnenden Fenster laeuft das ausfuehrbare Programm. Folgende Besonderheiten sind zu beachten: # Die "Escape-Sequenzen", mit denen die Funktion clscrn.c (Abschnitt 3.12) versucht, den "Bildschirm zu loeschen", sind in Windows- Applikationen obsolet (das Fenster, in dem das Programm ablaeuft, wird ohnehin erst erzeugt und ist damit leer). Weil die Escape- Sequenzen als "haessliche Zeichen" im Fenster erscheinen, sollten entweder die beiden printf-Anweisungen aus der Funktion clscrn "herauskommentiert" oder die clscrn-Aufrufe aus den Programmen valtab05.c, valtab06.c, valtab07.c und valtab08.c herausgenommen werden. # Das Programm syscall.c (Abschnitt 3.15) kann nicht als "Windows application" erzeugt werden, weil die C-Funktion system unter Windows nicht verfuegbar ist. # Programme, die Parameter aus der Kommandozeile erwarten, koennen aus der Entwicklungsumgebung gestartet werden, indem vor "Start ---> Ausfuehren" das Angebot "Start ---> Argumente..." gewaehlt wird. "Ausfuehren..." gewaehlt. In der sich oeffnenden "Programmargumente"- Dialog-Box koennen die Argumente eingegeben werden. Fuer das Kapitel 8 beruecksichtigen die folgenden Programme die Besonderheiten dieses Compilers bzw. Betriebssystems: tdirent2.c mkdpath.c tlsubdir.c tlst.c tlstsort.c Das Erzeugen einer Library wird am Beispiel der Library libpriv.lib beschrieben: * Projekt ---> Projekt oeffnen..., * in der "Projektdatei oeffnen"-Dialog-Box in das Directory wechseln, in dem die Parser-Funktionen gespeichert sind, * im Feld "Dateiname" libpriv.prj eintragen, Button OK anklicken, * Projekt ---> Datei einfuegen ..., * in der Dialog-Box "In Projektliste aufnehmen" im Feld "Dateiname" *.c eintragen, Return-Taste druecken, * im Fenster "Dateien" auf die Dateinamen doppelklicken, die in die Library eingefuegt werden sollen, * Button "Komplett" anklicken, * Optionen ---> Projekt aktualisieren ..., * im Fenster "Nach Compilierung" das Angebot Bibliotheksverwaltung starten auswaehlen, Button OK drcken, * Compiler ---> Alle Projekt-Dateien compilieren, und die Library LIBPRIV.LIB wird erzeugt. * Button OK anklicken. Wenn in einem Projekt Objektmoduln aus einer Library verwendet werden sollen, ist diese zusaetzlich zu den *.c-Files in der Dialog-Box "In Projektliste aufnehmen" dem Projekt hinzuzufuegen (um sie im Fenster "Dateien" ueberhaupt sichtbar zu machen, muss gegebenenfalls im Feld "Dateiname" *.lib eingetragen werden). Arbeiten mit MS-Visual-C++ 4.0 im DOS-Fenster von Windows95 oder Windows NT: ----------------------------------------------------------- Man beachte, dass Compiler und Linker erreichbar sein muessen (stehen ueblicherweise im Directory \MSDEV\BIN, das also im PATH verzeichnet sein muss). Ausserdem muessen einige Umgebungsvariablen gesetzt sein, damit zum Beispiel die Standard-Include-Dateien zu finden sind. Alles dies erreicht man zum Beispiel durch Starten der Batchprocedure VCVARS32.BAT (wird mit MS-Visual-C++ 4.0 geliefert und steht vermutlich auch im Directory \MSDEV\BIN). Die Programme der Kapitel 1 bis 7 duerften problemlos zu uebersetzen sein. Fuer das Kapitel 8 beruecksichtigen die folgenden Programme die Besonderheiten dieses Compilers bzw. Betriebssystems: m32diren.c mkdpath.c m32lsubd.c m32lst.c m32lsts.c Achtung: Der Library-Manager wird ab MS-Visual-C++-Version 4.0 mit einer geaenderten Syntax von der Kommandozeile des DOS-Fensters aufgerufen, z. B. koennen zum Einbringen einer Datei indouble.obj in die gleichzeitig zu erzeugende Library libpriv.lib der Befehl lib /OUT:libpriv.lib indouble.obj und zum Einbringen einer weiteren Datei beep.obj der Befehl lib libpriv.lib beep.obj verwendet werden. Arbeiten mit der integrierten Entwicklungsumgebung von MS-Visual-C++ 4.0 unter Windows 95 und Windows NT: ------------------------------------------------------ Empfehlung: Im "Developer studio" wird ein "Project" vom Typ "Console Application" kreiert (detailiierte Befehlsfolge siehe weiter unten). In der "Insert Files into Project"-Dialog-Box sind die gewuenschten *.c-Dateien zum Projekt hinzuzufuegen (in der Regel ist das nur eine Datei). Mit folgenden Befehlen im "Developer studio" kann z. B. das ausfuehrbare Programm zum Quellprogramm hptokw01.c (Abschnitt 3.5) erzeugt werden: * File ---> New..., * im "New"-Fenster wird "Project Workspace" gewaehlt und mit OK bestaetigt, * in der "New Project Workspace"-Dialog-Box wird im "Type"-Fenster "Console Application" gewaehlt, nach Anklicken des "Browse"-Buttons oeffnet sich die "Chosse Directory"-Dialog-Box, * Directory einstellen, UNTER dem die Projekt-Dateien erzeugt werden sollen (prinzipiell ist ein beliebiges Directory einstellbar, fuer die weitere Beschreibung wird angenommen, dass das eingestellte Directory cprogs heisst und sich in diesem die Datei hptokw01.c befindet), * "Choose Directory"-Dialog-Box mit "OK" schliessen, * in der "New Project Workspace"-Dialog-Box wird im Feld "Name:" hptokw01 eingetragen, * die "New Project Workspace"-Dialog-Box ueber "Create" verlassen, dabei wird automatisch ein Subdirectory hptokw01 erzeugt (falls es nicht bereits existiert), * Insert ---> Files into Project... * in der sich oeffnenden "Insert Files into Project"-Dialog-Box muss man gegebenenfalls die Dateien erst suchen, die man einfuegen will, wenn (wie angenommen) hptokw01 als Subdirectory von cprogs erzeugt wurde, in dem sich hptokw01.c befindet, muss man durch Anklicken des Buttons mit dem nach oben gerichteten abgewinkelten Pfeil in diese Directory wechseln, dort wird die Datei hptokw01.c ausgewaehlt und mit dem "Add"-Button in das Projekt uebernommen, * Build ---> Build hptokw01.exe, und Compiler und Linker erzeugen das ausfuehrbare Programm, * Build ---> Execute hptokw01.exe, und in einem Fenster laeuft die Console application HPTOKW01. Folgende Besonderheiten sind zu beachten: # Unterhalb des Directories, in dem die Projektdateien angesiedelt sind, wird je nach Einstllung (Voreinstellung: Win32 Debug) ein Directory debug oder ein Directory release (automatisch) angelegt. Das Ergebnis des "Build"-Kommandos (EXE-File oder Library) befindet sich in einem dieser Subdirectories. # Die "Escape-Sequenzen", mit denen die Funktion clscrn.c (Abschnitt 3.12) versucht, den "Bildschirm zu loeschen", sind in Windows- Applikationen obsolet (das Fenster, in dem das Programm ablaeuft, wird ohnehin erst erzeugt und ist damit leer). Weil die Escape- Sequenzen als "haessliche Zeichen" im Fenster erscheinen, sollten entweder die beiden printf-Anweisungen aus der Funktion clscrn "herauskommentiert" oder die clscrn-Aufrufe aus den Programmen valtab05.c, valtab06.c, valtab07.c und valtab08.c herausgenommen werden. # Programme, die Parameter aus der Kommandozeile erwarten, koennen ueber den "Start"-Button gestartet werden: Nach "Start" wird "Ausfuehren..." gewaehlt. In der "Ausfuehren"-Dialog-Box kann dann die komplette Kommandozeile eingegeben werden. Besser und bequemer ist es, diese Programme im DOS-Fenster zu starten. Fuer das Kapitel 8 beruecksichtigen die folgenden Programme die Besonderheiten dieses Compilers bzw. Betriebssystems: m32diren.c mkdpath.c m32lsubd.c m32lst.c m32lsts.c Das Erzeugen einer Library wird am Beispiel der Library libpriv.lib beschrieben: * File ---> New..., * im "New"-Fenster wird "Project Workspace" gewaehlt und mit OK bestaetigt, * in der "New Project Workspace"-Dialog-Box wird im "Type"-Fenster "Static Library" gewaehlt, nach Anklicken des "Browse"-Buttons oeffnet sich die "Chosse Directory"-Dialog-Box, * Directory einstellen, UNTER dem die Projekt-Dateien erzeugt werden sollen (prinzipiell ist ein beliebiges Directory einstellbar, fuer die weitere Beschreibung wird angenommen, dass das eingestellte Directory cprogs heisst und sich in diesem die Dateien beep.c, clscrn.c, indouble.c und mkdpath.c befinden), * "Choose Directory"-Dialog-Box mit "OK" schliessen, * in der "New Project Workspace"-Dialog-Box wird im Feld "Name:" libpriv eingetragen, * die "New Project Workspace"-Dialog-Box wird ueber "Create" verlassen, dabei wird automatisch ein Subdirectory libprv erzeugt (falls es nicht bereits existiert), * Insert ---> Files into Project..., * in der sich oeffnenden "Insert Files into Project"-Dialog-Box muss man gegebenenfalls die Dateien erst suchen, die man einfuegen will, wenn (wie angenommen) libpriv als Subdirectory von cprogs erzeugt wurde, in dem sich die Quellcode-Dateien befinden, muss man durch Anklicken des Buttons mit dem nach oben gerichteten abgewinkelten Pfeil in diese Directory wechseln, dort werden die Dateien beep.c, clscrn.c, indouble.c und mkdpath.c ausgewaehlt ("Einsammeln" nach typischer Windows-Strategie durch Anklicken bei gedrueckter Strg-Taste) und mit dem "Add"-Button in das Projekt uebernommen, * Build ---> Build libpriv.lib, und Compiler und Linker erzeugen die Library. Wenn in einem Projekt Objektmoduln aus einer Library verwendet werden sollen, ist diese zusaetzlich zu den *.c-Files in der "Insert Files into Project"-Dialog-Box dem Projekt hinzuzufuegen (diese muss gegebenenfalls ein zweites Mal geoeffnet werden). Man beachte, dass die Library beim Erzeugen in einem Subdirectory UNTERHALB des Project-Directories (in einem Subdirectory debug oder einem Subdirectory release) gelandet ist und dort auch erst sichtbar wird, nachdem man in der "Insert Files into Project"-Dialog-Box als Dateityp "Library Files (*.lib)" eingestellt hat. Es ist dringend anzuraten, dass alle an einem Projekt beteiligten Libraries mit der gleichen Einstellung (Win32 Debug bzw. Win32 Release) erzeugt wurden, mit der auch das Projekt, in das sie eingebunden sind, arbeitet. Arbeiten mit MS-Visual-C++ 5.0 im DOS-Fenster von Windows95 oder Windows NT: ----------------------------------------------------------- Man beachte, dass Compiler und Linker erreichbar sein muessen (stehen ueblicherweise im Directory \Programme\DevStudio\VC\bin, das also im PATH verzeichnet sein muss). Ausserdem muessen einige Umgebungsvariablen gesetzt sein, damit zum Beispiel die Standard-Include-Dateien zu finden sind. Alles dies erreicht man zum Beispiel durch Starten der Batchprocedure VCVARS32.BAT (wird mit MS-Visual-C++ 5.0 geliefert und steht vermutlich auch im Directory \Programme\DevStudio\VC\bin). Die Programme der Kapitel 1 bis 7 duerften problemlos zu uebersetzen sein. Fuer das Kapitel 8 beruecksichtigen die folgenden Programme die Besonderheiten dieses Compilers bzw. Betriebssystems: m32diren.c mkdpath.c m32lsubd.c m32lst.c m32lsts.c Achtung: Der Library-Manager wird ab MS-Visual-C++-Version 4.0 mit einer geaenderten Syntax von der Kommandozeile des DOS-Fensters aufgerufen, z. B. koennen zum Einbringen einer Datei indouble.obj in die gleichzeitig zu erzeugende Library libpriv.lib der Befehl lib /OUT:libpriv.lib indouble.obj und zum Einbringen einer weiteren Datei beep.obj der Befehl lib libpriv.lib beep.obj verwendet werden. Arbeiten mit der integrierten Entwicklungsumgebung von MS-Visual-C++ 5.0 unter Windows 95 und Windows NT (deutschsprachige Version): ------------------------------------------------------ Empfehlung: Im "Developer Studio" wird ein Projekt vom Typ "Win32 Console Application" kreiert (detailiierte Befehlsfolge siehe weiter unten). In der "Dateien in Projekt einfuegen"-Dialog-Box sind die gewuenschten *.c-Dateien zum Projekt hinzuzufuegen (in der Regel ist das nur eine Datei). Mit folgenden Befehlen im "Developer Studio" kann z. B. das ausfuehrbare Programm zum Quellprogramm hptokw01.c (Abschnitt 3.5) erzeugt werden: * Datei ---> Neu..., * in der "Neu"-Dialog-Box wird die "Karteikarte Projekte" in den Vordergrund geholt, * im linken Fenster wird der Projekt-Typ "Win32 Console Application" gewaehlt, * in der Box, die mit "Pfad:" ueberschrieben ist, wird das Directory eingestellt, UNTER DEM ein Subdirectory fuer die Projektsteuerdateien eingerichtet werden soll, prinzipiell kann das ein beliebiges Directory sein, im folgenden wird angenommen, dass in der "Pfad:"-Box ein Directory cprogs eingestellt wird, in dem sich die Quellcode-Datei hptokw01.c befindet (dazu muss man gegebenenfalls auf den Button neben der "Pfad:"-Box klicken und in der "Verzeichnis waehlen"- Dialog-Box das gewuenschte Directory auswaehlen und mit "OK" bestaetigen), * in der "Neu"-Dialog-Box wird im Feld "Projektname:" hptokw01 eingetragen, * die "Neu"-Dialog-Box wird ueber "OK" verlassen, dabei wird automatisch ein Subdirectory hptokw01 erzeugt (falls es nicht bereits existiert), * Projekt ---> Dem Projekt hinzufuegen ---> Dateien..., * in der sich oeffnenden "Dateien in Projekt einfuegen"-Dialog-Box befindet man sich zunaechst im Projekt-Directory hptokw01, in dem keine *.c-Dateien angezeigt werden, wenn (wie angenommen) hptokw01 als Subdirectory von cprogs erzeugt wurde, in dem sich hptokw01.c befindet, durch Anklicken des Buttons mit dem nach oben gerichteten abgewinkelten Pfeil wechselt man in das Directory cprogs, dort wird die Datei hptokw01.c ausgewaehlt und mit dem "OK"-Button beim Schliessen der Dialog-Box in das Projekt uebernommen, * Erstellen ---> hptokw01.exe erstellen (schneller durch Anklicken des Buttons mit den abwaerts gerichteten Pfeilen), und Compiler und Linker erzeugen das ausfuehrbare Programm, * Erstellen ---> Ausfuehren von hptokw01.exe (schneller durch Anklicken des Buttons mit dem Ausrufezeichen), und in einem Fenster laeuft die "Win32 Console Application" hptokw01. Folgende Besonderheiten sind zu beachten: # Unterhalb des Directories, in dem die Projektdateien angesiedelt sind, wird je nach Einstllung (Voreinstellung: Win32 Debug) ein Directory debug oder ein Directory release (automatisch) angelegt. Das Ergebnis des "Build"-Kommandos (EXE-File oder Library) befindet sich in einem dieser Subdirectories. # Die "Escape-Sequenzen", mit denen die Funktion clscrn.c (Abschnitt 3.12) versucht, den "Bildschirm zu loeschen", sind in Windows- Applikationen obsolet (das Fenster, in dem das Programm ablaeuft, wird ohnehin erst erzeugt und ist damit leer). Weil die Escape- Sequenzen als "haessliche Zeichen" im Fenster erscheinen, sollten entweder die beiden printf-Anweisungen aus der Funktion clscrn "herauskommentiert" oder die clscrn-Aufrufe aus den Programmen valtab05.c, valtab06.c, valtab07.c und valtab08.c herausgenommen werden. # Programme, die Parameter aus der Kommandozeile erwarten, koennen ueber den "Start"-Button gestartet werden: Nach "Start" wird "Ausfuehren..." gewaehlt. In der "Ausfuehren"-Dialog-Box kann dann die komplette Kommandozeile eingegeben werden. Besser und bequemer ist es, diese Programme im DOS-Fenster zu starten. Fuer das Kapitel 8 beruecksichtigen die folgenden Programme die Besonderheiten dieses Compilers bzw. Betriebssystems: m32diren.c mkdpath.c m32lsubd.c m32lst.c m32lsts.c Das Erzeugen einer Library wird am Beispiel der Library libpriv.lib beschrieben: * Datei ---> Neu..., * in der "Neu"-Dialog-Box wird die "Karteikarte Projekte" in den Vordergrund geholt, * im linken Fenster wird der Projekt-Typ "Win32 Static Library" gewaehlt, * in der Box, die mit "Pfad:" ueberschrieben ist, wird das Directory eingestellt, UNTER DEM ein Subdirectory fuer die Projektsteuerdateien eingerichtet werden soll, prinzipiell kann das ein beliebiges Directory sein, im folgenden wird angenommen, dass in der "Pfad:"-Box ein Directory cprogs eingestellt wird, in dem sich die Quellcode- Dateien befinden (dazu muss man gegebenenfalls auf den Button neben der "Pfad:"-Box klicken und in der "Verzeichnis waehlen"- Dialog-Box das gewuenschte Directory auswaehlen und mit "OK" bestaetigen), * in der "Neu"-Dialog-Box wird im Feld "Projektname:" libpriv eingetragen, * die "Neu"-Dialog-Box wird ueber "OK" verlassen, dabei wird automatisch ein Subdirectory libpriv erzeugt (falls es nicht bereits existiert), * Projekt ---> Dem Projekt hinzufuegen ---> Dateien..., * in der sich oeffnenden "Dateien in Projekt einfuegen"-Dialog-Box befindet man sich zunaechst im Projekt-Directory libpriv, in dem keine *.c-Dateien angezeigt werden, wenn (wie angenommen) libpriv als Subdirectory von cprogs erzeugt wurde, in dem sich die Quellcode-Dateien befinden, durch Anklicken des Buttons mit dem nach oben gerichteten abgewinkelten Pfeil wechselt man in das Directory cprogs, dort werden die Dateien beep.c, clscrn.c, indouble.c und mkdpath.c ausgewaehlt (wie im Explorer mit der Maus bei gedrueckter Strg(Ctrl)-Taste "eingesammelt") und mit dem "OK"-Button beim Schliessen der Dialog-Box in das Projekt uebernommen, * Erstellen ---> libpriv.lib erstellen (schneller durch Anklicken des Buttons mit den abwaerts gerichteten Pfeilen), und Compiler und Library-Manager erzeugen die Library. Wenn in einem Projekt Objektmoduln aus einer Library verwendet werden sollen, ist diese zusaetzlich zu den *.c-Files in der "Dateien in Projekt einfuegen"-Dialog-Box dem Projekt hinzuzufuegen (diese muss gegebenenfalls ein zweites Mal geoeffnet werden). Man beachte, dass die Library beim Erzeugen in einem Subdirectory UNTERHALB des Project-Directories (in einem Subdirectory debug oder einem Subdirectory release) gelandet ist und dort auch erst sichtbar wird, nachdem man in der "Dateien in Projekt einfuegen"-Dialog-Box als Dateityp "Bibliothekdateien (.lib)" eingestellt hat. Es ist dringend anzuraten, dass alle an einem Projekt beteiligten Libraries mit der gleichen Einstellung (Win32 Debug bzw. Win32 Release) erzeugt wurden, mit der auch das Projekt, in das sie eingebunden sind, arbeitet. Arbeiten mit der integrierten Entwicklungsumgebung von Borland-C++ 5.0 unter Windows 95 bzw. Windows NT: ------------------------------------------------------ In der IDE von Borland C++ 5.0 wird ein Projekt vom Type "EasyWin" erzeugt, in das die *.c-Dateien (in der Regel ist es nur eine) eingefuegt werden. Im Menue-Angebot "Projekt" wird mit "Projekt aktualisieren" das Programm erzeugt. Mit folgenden Befehlen aus der Borland-C++-Entwicklungsumgebung kann z. B. das ausfuehrbare Programm zum Programm hptokw01.c (Abschnitt 3.5) erzeugt werden (es wird angenommen, dass die Quellcode-Datei hptokw01.c in einem Directory C:\ctut\cprogs steht): * Datei ---> Neu ---> Projekt..., * in der "Neues Ziel"-Dialog-Box wird im Feld "Projektverzeichnis und -name:" C:\ctut\cprogs\hptokw01.ide eingetragen (im Feld "Zielname:" steht dann automatisch: hptokw01), * im Fenster "Zieltyp:" wird "EasyWin [.exe]" gewaehlt (im Feld "Umgebung:" erscheint automatisch Windows 3.x(16), und im Feld "Zielmodell:" erscheint Large), * Button "Weitere" anklicken, in der sich oeffnenden "Weitere Optionen"- Dialog-Box wird in der mit "Anfangsknoten:" ueberschriebenen Gruppen-Box ".c Knoten" gewaehlt und mit "OK" bestaetigt, * mit "OK" wird die "Neues Ziel"-Dialog-Box geschlossen, * in einem mit "Projekt: ..." ueberschriebenen Fenster ist der "Knoten" hptokw01.exe zu sehen, dessen Abhaengigkeit von hptokw01.c angedeutet wird, * Projekt ---> Projekt aktualisieren, und Compiler und Linker erzeugen das ausfuehrbare Programm hptokw01.exe, Button "OK" anklicken. Die vom Linker erzeugte Warnung "No module definition file specified; using defaults" im Fenster "Meldungen" kann ignoriert werden. Das Programm kann aus der Entwicklungsumgebung gestartet werden: * Debug ---> Ausfuehren, es erscheint ein Fenster mit der Mitteilung: "Kann 16-Bit-Programme nicht debuggen. Ohne Debugger ausfuehren?" Nach Anklicken des "Ja"-Buttons laeuft das Programm in einem sich automatisch oeffnenden Fenster. Folgende Besonderheiten sind zu beachten: # Die "Escape-Sequenzen", mit denen die Funktion clscrn.c (Abschnitt 3.12) versucht, den "Bildschirm zu loeschen", sind in Windows- Applikationen obsolet (das Fenster, in dem das Programm ablaeuft, wird ohnehin erst erzeugt und ist damit leer). Weil die Escape- Sequenzen als "haessliche Zeichen" im Fenster erscheinen, sollten entweder die beiden printf-Anweisungen aus der Funktion clscrn "herauskommentiert" oder die clscrn-Aufrufe aus den Programmen valtab05.c, valtab06.c, valtab07.c und valtab08.c herausgenommen werden. # Das Programm syscall.c (Abschnitt 3.15) kann nicht als "EasyWin- Application" erzeugt werden, weil die C-Funktion system unter Windows nicht verfuegbar ist. # Programme, die Parameter aus der Kommandozeile erwarten, koennen ueber den "Start"-Button gestartet werden: Nach "Start" wird "Ausfuehren..." gewaehlt. In der "Ausfuehren"-Dialog-Box kann dann die komplette Kommandozeile eingegeben werden. Besser und bequemer ist es, diese Programme im DOS-Fenster zu starten. Fuer das Kapitel 8 beruecksichtigen die folgenden Programme die Besonderheiten dieses Compilers bzw. Betriebssystems: tdirent2.c mkdpath.c tlsubdir.c tlst.c tlstsort.c Das Erzeugen einer Library wird am Beispiel der Library libpriv.lib beschrieben (es wird wieder angenommen, dass das Projekt in dem Directory C:\ctut\cprogs erzeugt werden soll, in dem sich auch die Quellcode-Dateien der einzufuegenden Funktionen befinden): * Datei ---> Neu ---> Projekt..., * in der "Neues Ziel"-Dialog-Box wird im Feld "Projektverzeichnis und -name:" C:\ctut\cprogs\libpriv.ide eingetragen (im Feld "Zielname:" steht dann automatisch: libpriv), * im Fenster "Zieltyp:" wird "Statische Bibliothek (fuer .exe) [.lib]" gewaehlt (im Feld "Umgebung:" sollte Windows 3.x(16) eingestellt werden, im Feld "Zielmodell:" Large, um die Bibliothek konfliktfrei mit den "EasyWin"-Programmen verwenden zu koennen), * mit "OK" wird die "Neues Ziel"-Dialog-Box geschlossen, * im "Projekt: ..."-Fenster mit der RECHTEN MAUSTASTE auf libpriv.lib klicken, um das lokale Menue zu oeffnen, "Knoten hinzufuegen" auswaehlen, * im Fenster "In Projektliste aufnehmen" die Dateien "einsammeln" (Anklicken bei gedrueckter Strg-Taste), die in die Library eingefuegt werden sollen (Beep, Clscrn, Indouble , Mkdpath), sie erscheinen im Feld "Dateiname:", mit "Oeffnen" (wie sinnvoll!?) wird die Aktion abgeschlossen, * im "Projekt: ..."-Fenster sind die ausgewaehlten Dateien zu sehen, Doppelklick auf beep.c oeffnet die Datei in einem Editor-Fenster, die beiden printf-Zeilen werden "herauskommentiert", * Projekt ---> Projekt aktualisieren, und die Library libpriv.lib wird erzeugt, * Button OK anklicken. Wenn in einem Projekt Objektmoduln aus einer Library verwendet werden sollen, ist diese zusaetzlich zu den *.c-Files in das Projekt aufzunehmen: Im "Projekt:"-Fenster wird mit der rechten Maustaste auf die .exe-Datei geklickt, im lokalen Menue wird "Knoten hinzufuegen" gewaehlt, im Fenster "In Projektliste aufnehmen" muss im Feld Dateityp "Bibliotheken (*.lib)" eingestellt werden, um die Libraries ueberhaupt sichtbar zu machen, gegebenenfalls muss noch in das Directory gewechselt werden, in dem sich die Library befindet. Mit Doppelklick auf den Library-Namen wird diese in das Projekt eingefuegt.