Das C++Builder Rezeptbuch, Teil 2

Eine Praxisnahe Arbeitshilfe für die Entwicklung von C++-Programmen mit dem c++Builder
Langbeschreibung
In diesem Band werden u. a. die folgenden Themen behandelt:
- Eingriffe in den Programmablauf
- Erstellung von Geschäftsgrafiken mit der Komponente TChart
- Einführung in die Programmierung relationaler Datenbanken
- Erstellung von Datenbank-Berichten mit Rave Reports
- Dynamische Link-Bibliotheken
- Ankopplung von Moduln aus anderen Programmiersprachen
- Verbindung zum Internet mit den INDY-Komponenten
Durch zahlreiche charakteristische Anwendungsbeispiele wird der Leser rasch in die Lage versetzt, individuelle Anwendungen mit dem C++Builder selbst zu erstellen. Selbstverständlich wird dabei auf typische Fallstricke deutlich hingewiesen.
Weitere Bände, die sich u. a. mit fortgeschrittenen Datenbanktechniken, Data Snap - Client/Server-Lösungen und der Nutzung in integrierter Softwareentwicklung befassen sind geplant.
Inhaltsverzeichnis
Inhaltsverzeichnis
8. Eingriffe in den Programmablauf 14
8.1. Abbruch einer laufenden Berechnung zu einem beliebigen Zeitpunkt 14
8.1.1. Aufgabenstellung 14
8.1.2. Erster Lösungsversuch 14
8.1.2.1. Bedienoberfläche 14
8.1.2.2. Berechnungsschleife 14
8.1.2.3. Abbruchmechanismus 15
8.1.2.4. Testergebnis 15
8.1.3. Endgültige Lösung 15
8.1.3.1. Schritthaltende Resultatsanzeige 16
8.1.3.2. Zeitnaher Berechnungsabbruch durch Schaltflächenbetätigung 16
8.1.3.3. Berechnungsabbruch mittels Tastatureingabe 16
8.1.3.4. Zusammenfassung 17
8.1.4. Programmcode: Abbruch von Berechnungen (ProAbbruch) 18
8.1.4.1. Hauptformular FormMainAbbruch 18
8.1.5. Reduzierung der Prozessorbelastung 20
8.2. Abbruch einer laufenden Berechnung nach Ablauf einer vorgegebenen Zeit (Realisierung eines Timeouts) 21
8.2.1. Aufgabenstellung 21
8.2.2. Lösung 21
8.2.2.1. Bedienoberfläche 21
8.2.2.2. Berechnungsschleife 22
8.2.2.3. Zeitlicher Abbruchmechanismus 22
8.2.3. Programmcode: Programmabbruch durch Zeitablauf (ProTimeOut) 22
8.2.3.1. Hauptformular FormMainTimeOut 22
8.2.4. Reduzierung der Prozessorbelastung 24
8.3. Laufende Anzeige von Datenänderungen 24
8.3.1. Aufgabenstellung 24
8.3.2. Elementare Lösung 25
8.3.2.1. Anwendung und Bedienoberfläche in der selben Unit 25
8.3.2.2. Verteilung von Anwendung und Bedienoberfläche auf zwei verschiedene Units 26
8.3.3. Systematische Lösung 28
8.3.3.1. Bedienoberfläche 28
8.3.3.2. Anwendungsmodul 29
8.3.3.3. Ereignisbehandlung im Hauptformular 30
8.3.4. Programmcode: Ereignisgesteuerte Anzeige veränderlicher Daten (ProEreignis) 31
8.3.4.1. Hauptformular FrmMainEreignis 31
8.3.4.2. Unit UAnwendung 33
8.4. Gleiche Fachaufgabe - geändertes Gesicht 34
8.4.1. Lösung zur variierten Aufgabenstellung 34
8.4.2. Programmcode zur variierten Aufgabenstellung 35
8.4.2.1. Hauptformular FrmMainEreignisVar 35
9. Anspruchsvolle Geschäftsgrafiken problemlos erstellen (Einsatz von TChart) 37
9.1. Aufgabenstellung 38
9.1.1. Fachaufgabe 38
9.1.2. Aufbau und Vorgehen 38
9.2. Lösung mit dem TeeChart-Framework 39
9.2.1. Wichtige Methoden und Eigenschaften im Umfeld der Klasse TChart 39
9.2.1.1. Wichtige Eigenschaften und Methoden des Diagramms (TChart) 39
9.2.1.2. Wichtige Eigenschaften und Methoden von Datenreihen (TChartSeries) 42
9.2.1.3. Wichtige Eigenschaften und Methoden von Liniendiagrammen (TLineSeries) 42
9.2.1.4. Wichtige Eigenschaften und Methoden von Kreisdiagrammen (TPieSeries) 43
9.2.1.5. Wichtige Eigenschaften und Methoden von Blasendiagrammen (TBubbleSeries) 44
9.2.2. Formulare 44
9.2.2.1. Hauptformular FrmChartMain 44
9.2.2.2. Diagrammformulare 45
9.2.3. Interaktive Handhabung der Komponente TChart 46
9.2.4. Elemente der Diagrammgestaltung 46
9.2.5. Darstellung der Wahlergebnisse 47
9.2.5.1. Darstellung der Wahlergebnisse im Dialogverfahren 48
9.2.5.2. Darstellung der Wahlergebnisse durch Programmierung 55
9.2.5.3. Berechnung und Darstellung der Differenz zweier Datenreihen 55
9.2.5.4. Variationsmöglichkeiten für die Darstellung 60
9.2.5.5. Diagrammexport in Dateien 61
9.2.5.6. Diagrammdruck 61
9.2.6. Programmcode: Erstellung von Geschäftsgrafiken 62
9.2.6.1. Hauptformular FrmChartMain 62
9.2.6.2. Formular FrmChartStat für die statische Diagrammerstellung 63
9.2.6.3. Formular FrmChartDyn für die dynamische Diagrammerstellung 70
10. Borland Database Engine (BDE) - Der schnelle Weg zur Erstellung einfacher Daten­bankanwendungen 74
10.1. Die Architektur von Datenbankanwendungen 74
10.1.1. Datenbanklösung und Dateilösung 75
10.1.2. Die Beispielanwendung 76
10.2. Erstellung von Datenbanktabellen 77
10.2.1. Interaktive Erstellung der Datenbanktabelle Kunden.db mit dem Programm Datenbankoberfläche (Database Desktop) 77
10.2.1.1. Erstellen der Datenbanktabelle 77
10.2.1.2. Felder der Datenbanktabelle erstellen 78
10.2.1.3. Bearbeiten / Ändern 80
10.2.2. Erstellen der Datenbanktabelle Waren.db zur Laufzeit mittels eines individuell erstellten Programms 80
10.2.2.1. Aufgabenstellung 81
10.2.2.2. Lösungsweg 81
10.2.2.3. Der Alias 84
10.2.2.4. Definitionen für die gesamte Datenbanktabelle 85
10.2.2.5. Programmcode: Erstellung einer Datenbanktabelle 89
10.3. Programme zur Anzeige und Manipulation von Datenbanktabellen 92
10.3.1. Datenbanktabelle Waren.db 92
10.3.1.1. Aufgabenstellung 92
10.3.1.2. Löungsweg 92
10.3.1.3. Programmcode: Manipulation der Warendatentabelle. 96
10.3.2. Datenbanktabelle Rechnungen.db 97
10.3.3. Datenbanktabelle Rechnungspositionen.db 97
10.4. Verknüpfung von Datenbanktabellen 99
10.4.1. Verbindung von Kunden- und Rechnungsdaten 99
10.4.1.1. Einbau der Lookup-ComboBox 99
10.4.2. Verbindung von Waren- und Rechnungsdaten 100
10.4.2.1. Die zu einer bestimmten Rechnung gehörige Rechnungspositionen finden 101
10.4.2.2. Statt einer Warennummer die kompletten Wareninformationen in die Rechnungsposition einfügen 102
10.4.3. Programmcode: Erstellung und Manipulation von Rechnungen 105
10.4.3.1. Hauptformular FrmRechTabDialog 105
10.5. Berichtserstellung mit Rave Reports 115
10.5.1. Gestaltung des Berichts 117
10.5.1.1. Seiteneinrichtung 117
10.5.1.2. Fest positionierte Elemente 118
10.5.1.3. Flexible Berichtselemente 120
10.5.2. Verbindung von Datenbank (Datenmengen) und Bericht 121
10.5.2.1. Bereitstellung von Datenmengen für das Rave-Projekt 121
10.5.2.2. Nutzung der Datenmengen im Rave-Projekt 122
10.5.2.3. Datenanschluss der datensensitiven Komponenten im Rave-Report 122
10.5.2.4. Der Rave Reports Projektbaum 122
10.5.3. Programmierung der Berichtsausgabe 124
10.5.4. Programmcode: Ausdrucken von Datenbankberichten (Rechnungen) 125
10.5.4.1. Programmaufbau 125
10.5.4.2. Hauptformular FrmRechTabDialog 126
10.5.4.3. Berichtsformular FrmBerichtRech 126
10.6. Datenbanktabellen und Textdateien 129
10.6.1. Aufgabenstellung 129
10.6.2. Lösungsweg 130
10.6.2.1. CSV-Export 130
10.6.2.2. CSV-Import 131
10.6.3. Programmcode: Verbindung von Textdateien (CSV) und Datenbanken 133
10.6.3.1. Hauptformular FrmMainKunCSVImpExp 133
11. Nutzen Sie die Möglichkeiten Dynamischer Link-Bibliotheken (DLLs) 137
11.1. Ein bisschen Theorie 137
11.1.1. Möglichkeiten der DLL 137
11.1.1.1. Nutzung einer DLL durch mehrere Programme 138
11.1.1.2. Realisierung hybrider Programmkonzepte 138
11.1.1.3. Skalierung von Programmen 138
11.1.1.4. Verbesserung der Wartbarkeit 138
11.2. Sie erstellen eine DLL 139
11.2.1. Aufgabenstellung 139
11.2.2. Die Lösung 139
11.2.2.1. Die DLL - ein C++Builder-Projekt 139
11.2.2.2. Schnittstellen der DLL 141
11.2.3. Monolithische DLL 141
11.2.3.1. Programmcode für die monolithische DLL 142
11.2.4. Modulare DLL 142
11.2.4.1. Programmcode für die modulare DLL 143
11.2.5. Statische Bindung der DLL 144
11.2.5.1. Projekt ProMainStat_D 144
11.2.5.2. Hauptprogramm ProMainStatDLL_D 144
11.2.5.3. Probleme beim Verbinden von EXE-Datei und DLL 144
11.2.5.4. Hauptformular UFrmMain_D - Direkteinbau der Importschnittstelle 145
11.2.5.5. Hauptformular UFrmMain_Z - Zentrale Anordnung der Importschnittstelle in einer Schnittstellendatei 146
11.2.6. Testen von DLL-Funktionen 147
11.2.7. Trennung der Datenbereiche 148
11.2.8. Dynamische Bindung 149
11.2.8.1. Aufbau des Hauptprogramms (DLL-benutzendes Programm) 149
11.2.8.2. Aufbau des Schnittstellenmoduls UDLLImp 149
11.2.8.3. ProgrammCode für die Dynamische Einbindung von DLLs 151
11.3. Auch das geht: DLLs und VCL 152
11.3.1. Aufgabenstellung 152
11.3.1.1. Realisierung eines Formulars mittels einer DLL 152
11.3.1.2. Hauptprogramm ProDLLVCL 153
11.3.2. Lösungsweg 153
11.3.2.1. Die DLL VCLFormDLL zur Realisierung des Formulars 153
11.3.2.2. Hauptprogramm 154
11.3.3. Programmcode: Verwendung von VCL-Komponenten in DLLs 155
11.3.3.1. DLL VCLFormDLL.dll 155
11.3.3.2. Hauptprogramm 158
11.4. Noch ein Beispiel: DLL mit Objektschnittstelle 160
11.4.1. Aufgabenstellung 160
11.4.2. Lösung 160
11.4.2.1. Basisklasse TMWSt0 160
11.4.2.2. DLL ProDLLObjBeispiel 161
11.4.2.3. Hauptprogramm ProMainObjDLL 161
11.4.3. Programmcode: DLL zur Kapselung von Klassen 163
11.4.3.1. Basisklasse TMWSt0 163
11.4.3.2. DLL ProDLLObjBeispiel 164
11.4.3.3. Hauptprogramm ProMainObjDLL 165
11.4.3.4. Hauptformular FrmMainObjDLL 165
11.5. Zugang zu fremden Sprachwelten: Verwendung von Delphi-DLLs in C++Builder-Programmen 167
11.5.1. Aufgabenstellung 167
11.5.2. Lösungsweg 169
11.5.2.1. Funktion 169
11.5.2.2. Schnittstelleninformation 170
11.5.3. Programmcode: Verbindung eines C++-Hauptprogramms mit einer Delphi-DLL 172
11.5.3.1. Hauptformular 172
12. Internetanwendungen 174
12.1. Das (Open-Source-) Projekt Indy 174
12.2. Spezielle Indy-Datentypen 176
12.3. E-Mail aus einer Anwendung senden (Entwicklung eines SMTP-Clients) 179
12.3.1. Aufgabenstellung 179
12.3.2. Lösungsweg 180
12.3.2.1. Sendemethode BtnSMTPSendenClick 183
12.3.3. Programmcode: Senden von E-Mail-Nachrichten (SMTP-Client) 186
12.3.3.1. Hauptprogramm ProSMTPClient 186
12.3.3.2. Formularunit UFrmMainSMTPClient 186
12.4. E-Mail in einer Anwendung empfangen (Entwicklung eines POP3-Clients) 190
12.4.1. Aufgabenstellung 190
12.4.2. Lösungsweg 192
12.4.2.1. Empfangsmethode BtnPOP3EmpfangenClick 193
12.4.2.2. Auflistung der eingegangenen Nachrichten 194
12.4.2.3. Anzeige der Textnachrichten und Auflistung der Anhänge 198
12.4.2.4. Abspeichern der Nachrichten und Anhänge 200
12.4.2.5. Löschen von Nachrichten 201
12.4.2.6. Trennen der Verbindung 202
12.4.3. Programmcode: Empfangen von E-Mail-Nachrichten (POP3-Client) 202
12.4.3.1. Hauptprogramm ProPOP3Client 202
12.4.3.2. Formularunit UFrmMainPOP3Client 202
12.5. Dateiverkehr mit dem Internet (Erstellung eines FTP-Clients) 208
12.5.1. Was ist FTP? 208
12.5.2. Aufgabenstellung 208
12.5.3. Installation eines Testservers 208
12.5.3.1. Installation von Filezilla 209
12.5.3.2. Installation von FreeFTPd 211
12.5.3.3. Installation von ftpsrv110 213
12.5.4. Vorgehen bei der Lösung 213
12.5.5. Entwicklungsstufe 1 214
12.5.5.1. Bedienoberfläche 214
12.5.5.2. Verbinden 214
12.5.5.3. Anmelden (LogIn) 216
12.5.5.4. Trennen 216
12.5.5.5. Ereignismethoden zur Verfolgung des Betriebszustandes des FTP-Clients 217
12.5.6. Entwicklungsstufe 2 217
12.5.6.1. Bedienoberfläche 218
12.5.6.2. Darstellung der Verzeichnisliste 218
12.5.7. Entwicklungsstufe 3 219
12.5.7.1. Navigation im Server-Verzeichnis 220
12.5.7.2. Wechsel auf das übergeordnete Verzeichnis 220
12.5.8. Entwicklungsstufe 4 220
12.5.8.1. Bedienoberfläche 220
12.5.8.2. Download 222
12.5.8.3. Upload 223
12.5.9. Programmcode: Realisierung eines FTP-Clients 223
12.5.9.1. Hauptformular FrmMainFTPClient4 223
Literaturverzeichnis 230
Stichwortverzeichnis 232
Autor:Prof. Dr.-Ing. Wilfried Koch lehrt an der Hochschule Ravensburg-Weingarten Software-Engineering und Künstliche Intelligenz. Außerdem leitet er das Steinbeis-Transferzentrums Software- und Systemtechnik in Oberkochen. Erfahrungen aus seinen Lehrveranstaltungen sowie zahlreichen kommerziellen Projekten bilden die Basis dieses Buchs.
ISBN-13:
9783945899168
Veröffentl:
2020
Erscheinungsdatum:
11.12.2020
Seiten:
236
Autor:
Wilfried Koch
Gewicht:
419 g
Format:
220x170x17 mm
Serie:
4, informatik-ganz-einfach
Sprache:
Deutsch

17,99 €*

Lieferzeit: Print on Demand - Lieferbar innerhalb von 3-5 Werktageni
Alle Preise inkl. MwSt. | zzgl. Versand