CAO-Faktura EntwicklerDoku Version 1.3 Stand 04.10.2004 Der Einstieg in die Entwicklung mit Delphi 5 bis 7 Published under the „Free Documentation License“ by Daniel Pust and Axel Frankenberg CAO-Faktura EntwicklerDoku Seite 2 Autoren: Copyright (c) by • Daniel Pust alias Tom • Axel Frankenberg alias lexa Danke Sputzi, für Deine unendliche Geduld! [email protected] [email protected] Lizenz und Nutzungsbestimmungen Dieses Dokument ist Bestandteil des CAOProjektes und unterliegt vollständig der GNU Free Documentation License. Die Lizenz ist in einer deutschsprachigen Version im Anhang enthalten. Die verbindliche, englischsprachige Originalversion ist auf der Webseite der Free Software Foundation unter http://www.gnu.org/licenses/licenses.html#FDL einsehbar. Zusätzlich zur GNU FDL gelten die folgenden Bestimmungen: Das CAO Projekt und deren Autoren und Programmierer übernehmen keine Gewähr für die Funktionalität der Beschreibung bzw. deren Nutzen. Insbesondere übernehmen wir keinerlei Haftung für eventuelle, aus dem Gebrauch resultierende Schäden oder Folgeschäden. Die Nennung und Verwendung von Gebrauchsmustern, Handelsnamen, Warenbezeichnungen usw. berechtigt, auch ohne besondere Kennzeichnung, nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und MarkenschutzGesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Wer in dieser Dokumentation Fehler oder Anlass zur Kritik findet, wende sich bitte an einen der Autoren. Natürlich nehmen wir auch gern Anregungen und Verbesserungsvorschläge für Folgeversionen entgegen. Das CAO Projekt bedankt sich bei allen Helfern für die aktive Unterstützung. © 2003 by Daniel Pust, 2004 Lexa Seite 2 CAO-Faktura EntwicklerDoku Seite 3 Historie: Wer Wann Version Was TOM 27.06.2003 1.0 Initial Release TOM 06.07.2003 1.1 Erweiterung: XML / Projektpfad / Tabellen TOM 05.08.2003 1.2 Erweiterung SynEdit / Bugfix CVS Server / Neue Konfiguration LEXA 04.10.2004 1.3 Überarbeitung und Anpassung an den aktuellen Entwicklungsstand CAO 1.2.5.x, Komponentenaktualisierung, Screenshots etc.. Portierung der Doku nach OpenOffice.org © 2003 by Daniel Pust, 2004 Lexa Seite 3 CAO-Faktura EntwicklerDoku Seite 4 Inhalt 1. Vorwort....................................................... 5 6. Datenbankstruktur...................................32 1.1. Kompromisse...............................................5 7. Konfiguration von CAO-Faktura............ 33 1.2. Danksagungen............................................ 5 7.1. CAO Faktura Version 1.2.......................... 33 2. Sourcen und Vorbereitungen................... 6 7.1.1. Die Konfigurationsdatei..................... 35 2.1. Ein CAO Entwicklungssystem .................... 6 7.2. CAO Faktura Version 1.3.......................... 37 2.1.1. Tortoise CVS.......................................7 8. Compilieren der Quelle........................... 37 2.1.2. WinCVS...............................................7 8.1. Laden der Quelle.......................................37 2.1.3. Laden der Sourcen mit WinCVS......... 9 8.2. Die ersten Einstellungen............................37 2.1.4. Ohne CVS Zugang............................11 8.3. Compiler- und Linkereinstellungen............38 3. Delphi Komponenten.............................. 12 8.4. CAO compilieren und starten.................... 39 3.1. Vorbereitungen..........................................12 9. Geschafft. Was nun?...............................39 3.2. Installation..................................................14 9.1. Probleme? Fragen? Unklarheiten?........... 40 3.2.1. INDY 9...............................................14 9.2. Delphi Links...............................................40 3.2.2. Jedi VCL............................................14 9.2.1. Delphi Linkliste..................................40 3.2.3. ZeosDBO.......................................... 19 9.2.2. Empfehlungsliste...............................40 3.2.4. mpsDTAUS....................................... 21 9.2.3. Delphi für Anfänger........................... 41 3.2.5. TVolgaDBEdit....................................22 9.2.4. Deutsche Delphi-Foren..................... 41 3.2.6. ZipMaster VCL.................................. 22 9.3. Links für Datenbankentwickler.................. 41 3.2.7. CAO Komponenten...........................23 9.3.1. MySQL.............................................. 41 3.2.8. NewExDBGrid...................................24 9.3.2. PostgreSQL.......................................41 3.2.9. SynEdit..............................................25 9.3.3. SQL Tools......................................... 41 3.2.10. tvPlanit............................................ 25 9.3.4. SQL Foren.........................................41 3.3. MS XML 4: Unit erstellen...........................27 9.4. Sonstiges...................................................41 3.4. Komponenteninstallation beenden............ 28 9.4.1. CVS...................................................41 4. Der MySQL Server und Werkzeuge....... 30 10. Anhang................................................... 41 4.1. Das Werkzeug „MySQL-Front“..................30 10.1. Index........................................................41 4.2. Bearbeiten von Tabellen............................31 10.2. Abbildungen.............................................42 4.3. Probleme mit der „libmysql.dll”.................. 32 10.3. GNU Free Documentation License......... 42 5. Der PostgreSQL Server...........................32 10.4. Notizen.....................................................46 © 2003 by Daniel Pust, 2004 Lexa Seite 4 CAO-Faktura EntwicklerDoku Seite 5 1. Vorwort Seit Anfang der 90-er Jahre wird das Warenwirtschaftssystem CAO-Faktura entwickelt und seit dem Jahr 2003 stehen die GNU Sourcen des Programmes im Internet unter SourceForge http://sourceforge.net/projects/CAO-Faktura/ zur Verfügung. Fast im Alleingang hat Jan P., der Initiator und „Vater“ des Projektes, das Programm entwickelt und kontinuierlich verbessert. Gestartet ist CAO-Faktura als DOS Programm für den eigenen Bedarf. Inzwischen ist das Programm zu einer ausgewachsenen 32-Bit Windows Anwendung herangewachsen. Irgendwann entschloss sich Jan, die Sourcen des Programmes jedermann zur Verfügung zu stellen, in der Hoffnung auf rege Unterstützung aus der OpenSource Gemeinde. Dadurch wäre es den vielen Programmierern dieser Welt möglich, die Weiterentwicklung aktiv zu unterstützen und Ideen zu verwirklichen, sowie das Programm kontinuierlich auszubauen und dessen Funktionalität zu erweitern. 1.1. Kompromisse Dass der Programmcode nicht vollständig freigegeben werden kann, liegt an diversen kommerziellen Komponenten, die zur Erstellung einer uneingeschränkt lauffähigen CAO Version notwendig sind. Viele interessierte Programmierer stören sich an diesem Umstand und bekunden mitunter heftig ihr Unverständnis, was wir sehr schade und finden aber uns gegenüber nicht fair ist. Weder Jan, noch das CAO Team, das sich inzwischen um ihn versammelt hat, können daran etwas ändern. Abhilfe kann nur durch aktive Mitarbeit geschehen, wie es zum Teil schon demonstriert wurde, z.B. durch uwewo, der eindrucksvoll die Einbindung des frei verfügbaren FreeReport als Ersatz für den kommerziellen ReportBuilder vollzogen hat. Ein anderes Beispiel ist die Portierung von CAO auf PostgreSQL, um der geänderten Lizenzpolitik der MySQL AB zu begegnen. Hier hat uns Elyot umfangreiche Analysen und interessante Testberichte zur Verfügung gestellt. Falls sich der geschätzte Leser die CAO Delphi-Sourcen besorgt hat, um eine eigene CAO Version zu stricken, so müssen wir an dieser Stelle vor überzogenen Erwartungen warnen. Die frei verfügbaren CAO Sourcen sind nicht dafür geeignet, weil sie aus den genannten Gründen nicht vollständig sein können. Es steht jedoch jedem Entwickler frei, sich diese (teilweise recht teuren) Sourcen zu besorgen um daraus sein eigenes CAO-Süppchen zu kochen. Besser wäre es aber, wenn die Sourcen dazu genutzt würden, dem Programm neue Funktionen einzuhauchen und die Entwicklung zu unterstützen, denn das ist die Idee, die Jan mit der Veröffentlichung des Quellcodes bezweckt hat es ist zudem einfacher, effizienter und sinnvoller als jede Eigenbrötlerei. Die frei verfügbaren Sourcen von CAO-Faktura ermöglichen jedem Delphi Programmierer, ein lauffähiges CAO zu compilieren, auszutesten und zu erweitern, nicht mehr und nicht weniger. Dieses Handbuch soll Dich auf dem Weg dorthin unterstützen. Wenn eines Tages das CAO-Faktura und das Projekt von der Mitarbeit interessierter Entwickler, Tester und anderer Helfer profitiert, hat sich die Freigabe des Quellcodes und das Schreiben dieses Handbuches gelohnt. Bitte denke kurz darüber nach, bevor Du Dich in die Welt der Bits und Bytes von CAO stürzt. In diesem Sinne wünschen wir jedem CAO Entwickler und Hobby-Coder gutes Gelingen und stehen bei Bedarf mit Rat und Tat zur Seite. 1.2. Danksagungen Nach den einleitenden Worten möchten wir uns bei den CAO Usern bedanken, die uns im Forum Hinweise auf Stolperfallen bei der Einrichtung der CAO Entwicklungsumgebung gegeben haben, z.B. mmoellner (Misha aus Wien), und tomass, der sich als erster die Zeit genommen hat, die „Ur-Version“ dieser Doku auszuprobieren. Außerdem ein Danke den Helfern im Forum, die uns und den CAO Anwendern mit Rat und Tat zur Seite stehen und uns durch ihre Arbeit den Freiraum geben, den wir zur Entwicklung von CAO-Faktura und zur Organisation des Projekts benötigen, z.B. Elyot, Eddi-t, jens-streubel, back.to.roots, Fstruwe, Josef Sterk, g-audio usw. © 2003 by Daniel Pust, 2004 Lexa Seite 5 CAO-Faktura EntwicklerDoku Seite 6 Bitte seht es uns nach, wenn die Aufzählung nicht vollständig ist. Wir treffen euch fast täglich im Forum. Ihr wisst sicher, wer gemeint ist 2. Sourcen und Vorbereitungen 2.1. Ein CAO Entwicklungssystem 1 Die vorliegende Dokumentation wurde unter Verwendung verschiedener Systemkonstellationen erarbeitet und getestet. Angegebene Versionsnummern sollen als Anhaltspunkt zur Überprüfung der Voraussetzungen dienen und sind nicht verbindlich bzw. gelten teilweise als Mindestanforderung. Die allgemein als „fortschrittlich“ angenommene Regel, immer nur die aktuellsten Versionen zu verwenden, kann sich bei der Entwicklung von umfangreichen Programmen wie CAO genau in das Gegenteil verkehren. Um also Komplikationen von vorn herein aus dem Weg zu gehen, empfehlen wir unbedingt die Verwendung der hier vorgeschlagenen Versionen der Komponenten. Echte Versionssprünge innerhalb dieser, z.B. Jedi 2.x auf Version 3.x Beta verbieten sich von selbst. Sofern Patches für die verwendeten Komponenten verfügbar sind, vor allem Sicherheitsupdates, sind diese natürlich Pflicht. Das gilt selbstredend auch für Delphi. Wir kommen an gegebener Stelle darauf zurück. • Windows 2000 mit SP3 oder SP4, Windows XP mit SP1 oder SP2 • Borland Delphi 5, 6 oder 7 Professional und Tortoise CVS oder WinCVS 1.3b (mit Python 2.3 für Makros) • MySQL Server, empfohlene Mindest-Version 3.23.55 f. Linux oder Windows • CAO-GNU Code Version 1.2.5.x • aktuelle Komponenten der CAO GNU Version (CVS oder Tarball bzw. Sourceforge) • ZeosDBO Komponenten Version 5.4.1-JP (JP steht für die von Jan modifizierte Version) • TZipMaster VCL Version 1.70 • TVolgaDBEdit vom 13.01.2003 • TExDBGrid Version 3.9-JP • JEDI-VCL Version 2.10 • mpsDTAUS Version 1.1 • SynEdit Version 1.1 • Internet Komponenten INDY Version 9 (Ver. 8, enthalten in Delphi 6, ist nicht geeignet!) Ziel dieser Dokumentation ist es, einen PC, auf dem ein von CAO-Faktura unterstütztes Betriebssystem (Windows NT, 2000 oder XP) und Delphi installiert sind, für die Mit- bzw. Weiterentwicklung des Programm CAO-Faktura einzurichten. Später gehen wir noch auf die allgemeine Konfiguration und erste Inbetriebnahme von CAO-Faktura ein. Eine ausführliche und unregelmäßig überarbeitete Bedienungsanleitung für CAO-Faktura steht als Handbuch zur Verfügung. Weitere Hilfe findet man in der FAQ von „Mac“, die gleichzeitig als kontextsensitive Hilfe in das Programm eingebunden wurde. Nicht zu vergessen: das Forum, in dem nach dem Motto „User helfen Usern“ Lösungen zu einzelnen Problemen zu finden sind. An weiteren Möglichkeiten arbeiten wir. Derzeit entsteht z.B. ein Wiki, eine online FAQ, ein Chatbereich usw. Welches sich davon am besten bewährt und von den Usern angenommen wird, wird sich noch zeigen müssen. Wir wünschen uns jedenfalls eine rege Teilnahme in jedem Diskussionsbereich, die nicht nur der Lösung eigener Probleme dient. Die wichtigste Informationsquelle für Fragen ist und bleibt jedoch das Forum auf www.cao-wawi.de. Dort gibt es spezielle Entwicklerboards, in denen sich Programmierer treffen und diskutieren können. 1 Unverbindliche Empfehlung. Eine Übersicht der Komponenten und Downloadquellen wird in Kapitel 2.1.3 aufgeführt. © 2003 by Daniel Pust, 2004 Lexa Seite 6 CAO-Faktura EntwicklerDoku Seite 7 Als Grundvoraussetzung für das Compilieren des CAO Quellcodes benötigen wir einen Windows PC mit installiertem Delphi Compiler der Versionen 5, 6 oder 7. Es kann, abhängig von der Entwicklungsumgebung (Delphi Version), kleine Unterschiede bei der Beschreibung der Vorgänge kommen, die jedoch einen ernsthaften Entwickler nicht vor unlösbare Probleme stellen sollte. Wer bereits an diesen Punkt scheitert, dem wird das Arbeiten am Quellcode von CAO wahrscheinlich keine Freude bereiten. In den Entwicklerboards des CAO Forums versuchen wir dennoch, im Rahmen unserer Möglichkeiten Hilfestellung zu geben. 2.1.1. Tortoise CVS [ Platzhalter ] 2.1.2. WinCVS Der aktuelle Sourcecode liegt naturgemäß im CVS. Ein anonymer Zugang ist derzeit leider nicht möglich. Wer weitere Informationen dazu sucht, möge sich im Forum informieren. Einen personalisierten Lesezugriff erhält man unkompliziert auf Anfrage, wenn ein Anflug der Bereitschaft zur Kooperation und Mitarbeit am Projekt erkennbar ist. Wer keinen CVS Zugang hat, kann dieses Kapitel getrost überspringen oder fragt beim CAO Team nach einem Zugang an. Auf die Möglichkeit, sich den Quellcode auf andere Weise zu beschaffen, kommen wir in Kapitel 2.1.4 zurück. Zunächst besorgen wir uns von www.wincvs.org das Programm WinCVS in der Version 1.3b, das trotz des Beta-Stadiums sehr brauchbar und stabil ist, und installieren es mit der Windows typischen Setup Routine. Um in den Genuß der mitgelieferten Admin-Makros zu kommen, ist es erforderlich, vor der Installation von WinCVS das Paket Python 2.3 für Windows zu installieren. Für die Zwischenlagerung der Delphi-Sourcen aus dem CVS erstellen wir einen lokalen Ordner, beispielsweise C:\projekte. Unter Admin Preferences nehmen wir in WinCVS folgende Einstellungen vor: Abbildung 1 - Einstellungen für den CVS Server © 2003 by Daniel Pust, 2004 Lexa Seite 7 CAO-Faktura EntwicklerDoku Seite 8 Abbildung 2 - Optimieren der Übertragung Abbildung 3 - Proxy definieren, wenn nötig © 2003 by Daniel Pust, 2004 Lexa Seite 8 CAO-Faktura EntwicklerDoku Seite 9 Abbildung 4 - Editor und Passwortdatei 2.1.3. Laden der Sourcen mit WinCVS Zum Laden der Sourcen aus dem CVS melden wir uns am Server an, also Menü: Admin Logon Falls wir einen personalisierten Zugang zum CVS haben, müssen wir in einem entsprechenden Dialog das erteilte Passwort eingeben. Für einen anonymen Zugang, der nicht immer gewährleistet werden kann, bleibt das Passwort leer. Wir bestätigen den Dialog mit OK. Unter Create Checkout Modules öffnet sich folgender Dialog: Unter Local folder to checkout to tragen wir den zuvor angelegten Pfad ein und bestätigen den Dialog mit OK. © 2003 by Daniel Pust, 2004 Lexa Seite 9 CAO-Faktura EntwicklerDoku Seite 10 Abbildung 5 - Erfolgreicher Login und Checkout Wenn bis jetzt alle Aktionen erfolgreich waren, sehen wir die obige Ausgabe im WinCVS Log-Fenster. Wichtig ist die Quittierung mit exited normally with code 0. Sollte dort code 1 oder anderes (ungleich 0) stehen, ist etwas an den Login Einstellungen falsch und muss korrigiert werden. Nun werden die Sourcen aus dem Repository des CVS Servers geladen und im lokalen Ordner gespeichert. Da sich im CVS-Ordner nur die Komponenten befinden, in deren Sourcen Änderungen zu Anpassung an CAO-Faktura vorgenommen wurden, müssen wir uns fehlende Pakete und Patches aus dem Web besorgen. Vergleiche dazu auch Kapitel 2.1 Externe Komponenten: • Jedi VCL 2.10 jvcl.sourceforge.net/ • JVCL210FIX030313 Update für Fehler in JvComputerInfo.pas • TZipMaster VCL 1.70 www.cao-wawi.de/cao/zmstr170.zip • TvolgaDBEdit vom 13.01.2003 www.cao-wawi.de/cao/volgapack_de.zip • mpsDTAUS 1.1 www.mpscologne.de/de/downloads.htm • SynEdit 1.1 synedit.sourceforge.net/ • MS_XML_40_SP2.zip Update für MS-XML (nur für Shoptransfer) Im Source enthaltene bzw. modifizierte Komponenten: • Display © 2003 by Daniel Pust, 2004 Lexa Kassendisplaysteuerung Seite 10 CAO-Faktura EntwicklerDoku Seite 11 • NewExDBGrid_3.9 JP Listendarstellung • tvPlanit Terminplaner • zeosdbo-5.4.1 Datenbank Komponente Weitere Komponenten: • btJvxRichPopup.pas [...] • CaoDBGrid.pas Listendarstellung • CaoGroupBox.pas [...] • CaoMultiLang.pas [...] • CaoSecurity.pas [...] • email32.pas [...] • SortGrid.pas minimal angepasste Unit zur wechselfarbigen Darstellung von Zeilen, original Bestandteil der TZipMaster VCL Komponente • XPMenu.pas Menüdarstellung im WinXP Stil • EuroDMEdit wird nicht mehr benötigt • Historyc wird nicht mehr benötigt Soweit vorhanden, verwenden wir ausschließlich jene Komponenten, die im Source Download enthalten sind, da diese - wie schon erwähnt - speziell an CAO angepasst sind. Diese Sammlungen befinden sich in entsprechenden separaten Unterordnern des Ordners Komponenten. Veraltete Komponenten, wie z.B. EuroDMEdit und Historyc sind dort aus historischen Gründen ebenfalls enthalten, werden aber für das aktuelle CAO nicht mehr benötigt und müssen nicht installiert werden. Optimierung der CAO Komponenten Momentan werden die CAO Komponenten etwas ungeordnet in Delphi eingebunden. Wir hatten bisher keine Veranlassung dies besser zu organisieren2. Wenn man die Komponenten installiert wie geliefert, erscheinen sie in der Komponentenleiste unter verschiedenen Namen. Das ist nicht weiter tragisch, aber etwas konfus, speziell für Einsteiger. Deshalb bietet es sich an, die Registrierungsprozedur der CAO-Komponenten zu vereinheitlichen, damit sie leichter aufzufinden sind. Dazu öffnet man nacheinander jede der CAO Komponenten und ändert vor dem Installieren den folgenden Abschnitt: procedure Register; begin RegisterComponents('JP-SOFT', [TCaoGroupBox]); end; Dort ist als Name jeweils „CAO-Faktura“ einzutragen, im obigen Beispiel also an die Stelle, wo derzeit „JP-Soft“ steht. Das Ergebnis ist eine Komponentenleiste, in der jeder einzelne CAO-Part unter „CAO-Faktura“ integriert ist. Ausnahme: Da das SortGrid als Bestandteil der ZipMaster Komponente eingebunden wird, werden wir die dort eingetragene Bezeichnung nicht ersetzen. 2.1.4. Ohne CVS Zugang Falls uns das CVS Repository aus den angeführten oder anderen Gründen nicht zur Verfügung steht, laden wir uns entweder aus dem Downloadbereich von www.cao-wawi.de den Quellcode als ZIP-Datei herunter oder versuchen es mit dem Tarball, der auf SourceForge angeboten wird. Oft sind dies jedoch nicht die aktuellsten Versionen, denn sie werden unregelmäßig als Snapshot aus dem CVS generiert. 2 Wer sich dazu berufen fühlt, darf gerne ein vereinheitlichtes Package bauen und Einsteigern zur Verfügung stellen © 2003 by Daniel Pust, 2004 Lexa Seite 11 CAO-Faktura EntwicklerDoku Seite 12 3. Delphi Komponenten 3.1. Vorbereitungen Falls noch nicht geschehen, führt der erste Weg auf die Internetseite von Borland. Dort besorgen wir uns die für Delphi erhältlichen Updates. Für Delphi 6 gibt es zum aktuellen Zeitpunkt drei Pakete. Diese werden nach der Installationsvorgabe eingespielt: 1. Delphi 6 Update Pack 2 2. Delphi 6 RTL (Runtime Library) Update Pack 2 3. Delphi 6 RTL Update Pack 3 Für die Delphi Versionen 5 und 7 gilt entsprechendes. Nun werden wir sämtliche Komponenten in eigene Ordner entpacken, dann geht die Installation im Delphi leichter von der Hand. Im folgenden kann es passieren, dass die Begriffe „Komponente“ und „Package“ verwendet werden. Bitte nicht verwirren lassen, es läuft meist auf dasselbe hinaus. Im Delphi Lib-Verzeichnis C:\Programme\Borland\Delphi6\Lib legen wir beispielsweise den Ordner ZeosDB an und kopieren den Inhalt der Sourcen unter cao\komponenten\zeosdbo dort hin. Die weiteren Komponenten werden ebenfalls in entsprechende Pfade kopiert. Zur Verdeutlichung folgt im Anschluss eine Darstellung des Delphi Lib-Ordners im Windows Explorer. Die für CAO angelegten Komponenten-Verzeichnisse sind blau unterstrichen. © 2003 by Daniel Pust, 2004 Lexa Seite 12 CAO-Faktura EntwicklerDoku Seite 13 Abbildung 6 - Verzeichnisse der CAO Komponenten Damit es übersichtlicher ist, wurde hier der Verzeichnis-Baum in zwei Hälften getrennt und nebeneinander dargestellt. Nun haben wir alle Vorbereitungen getroffen und beginnen im folgenden Kapitel mit der Installation. © 2003 by Daniel Pust, 2004 Lexa Seite 13 CAO-Faktura EntwicklerDoku Seite 14 3.2. Installation 3.2.1. INDY 9 Bevor wir beginnen, ist sicher zu stellen, dass sich keine veraltete Jedi Version im Delphi befindet. Gegebenenfalls muss eine solche zunächst de-installiert oder de-aktiviert werden. Mit den INDY Komponenten der Version 8, die standardmäßig in Delphi 6 enthalten sind, würden wir Fehler erhalten. Die Sourcen haben wir bereits in den Delphi Lib Ordner entpackt: G:\Programme\Borland\Delphi6\Lib\INDY9\Source Es gibt nun zwei Möglichkeiten das Package zu compilieren und zu installieren, manuell oder automatisch. Beide funktionieren problemlos mit Delphi 6 und 7, deshalb beschränken wir uns auf die automatisierte Methode mittels Compiler-Script, die Delphi IDE muss dafür nicht gestartet sein. Wir starten dazu das Script INDY9\Source\Fulld6.bat bzw. das für die Delphi Version passende Script, z.B. Fulld7.bat 3 In dem neuen Ordner INDY9\D6 finden wir die compilierten Units, den Pfad $(DELPHI)\Lib\INDY9\D6 tragen wir in die Delphi Umgebung ein. Die Umgebung wird bekanntlich konfiguriert unter Tools Umgebungsoptionen Bibliothekspfad Nun öffnen wir das Entwurfs-Package .\INDY9\D6\DclIndy60.bpl über Komponente Packages installieren und binden es auf diese Weise in Delphi ein, compiliert haben wir es bereits im vorigen Schritt. Zum Abschluss der Installation müssen wir noch den Bibliothekspfad $(DELPHI)\Lib\INDY9\Source hinzufügen, wiederum in den Umgebungsoptionen wie oben beschrieben. Abbildung 7 - Indy 9 installiert 3.2.2. Jedi VCL Wir kommen nun zum spannendsten Kapitel der Komponenten Installation. Die Spannung baut sich im Verlauf der Installation auf. Wir werden versuchen, diese Spannung auf ein Minimum zu begrenzen und ein wenig ins Detail gehen und auf eventuelle Probleme hinweisen. Anpassungen Die JediVCL enthält Installationstools, z.B. befindet sich im Ordner .\Jedi eine install.bat, mit der das Installieren ein Kinderspiel sein sollte. Manchmal stellt sich jedoch heraus, dass dem nicht so ist. Bevor wir nun richtig beginnen, erfordert die Jedi noch das Einspielen eines Sicherheitspatches und eines kleinen Bugfixes für CAO, der im Artikel http://www.cao-wawi.de/board/viewtopic.php?t=20 in unserem Forum beschrieben ist. Aber der Reihe nach: 3 Bitte nicht das Script Fullc6.bat, starten, die Fullc Scripte sind für den C++Builder gedacht. © 2003 by Daniel Pust, 2004 Lexa Seite 14 CAO-Faktura EntwicklerDoku Seite 15 Zunächst erstellen wir von der Datei .\Lib\JEDI\jvcl\source\JvComputerInfo.pas eine Sicherheitskopie, indem wir sie beispielsweise nach JvComputerInfo_old.pas umbenennen. An deren Stelle kopieren wir die im Sicherheitsupdate JVCL210FIX030313.zip enthaltene Datei. Nun editieren wir eine Routine in der Datei .\Lib\JEDI\jvcl\source\JvCurrEdit.pas, da diese einen Bug enthält, der sich in CAO bemerkbar macht. Wir erstellen eine Sicherheitskopie und öffnen die Datei in Delphi oder einem Text-Editor, um die Korrektur vorzunehmen. Der Code der Procedure TJvCustomNumEdit.WMPaint (ziemlich am Ende der UNIT, Zeile 903) ist betroffen: Originalcode: procedure TJvCustomNumEdit.WMPaint(var Msg: TWMPaint); var S: string; begin inherited; if PopupVisible then S := TJvPopupWindow(FPopup).GetPopupText else S := GetDisplayText; { if not PaintComboEdit(Self, S, FAlignment, FFocused and not PopupVisible, FCanvas, Msg) then inherited;} end; korrigierter Code: procedure TJvCustomNumEdit.WMPaint(var Msg: TWMPaint); var S: string; begin if PopupVisible then S := TJvPopupWindow(FPopup).GetPopupText else S := GetDisplayText; if not PaintComboEdit(Self, S, FAlignment, FFocused and not PopupVisible, FCanvas, Msg) then inherited; end; Jetzt beginnt die eigentliche Installation der JEDI Komponenten durch Start der Datei: \Delphi6\Lib\JEDI\install.bat Wenn alles gut geht, war es das. Herzlichen Glückwunsch. Wenn nicht, dann bitte weiterlesen: Der Verweis auf das Delphi auf BPL Verzeichnis Der Delphi Standardpfad enthält einen Verweis auf das BPL Verzeichnis \Borland\Delphi6\Projects\Bpl. Wenn der Jedi Installer das nicht erkennt, wurde Delphi noch nie gestartet, also: Installer beenden, Delphi starten+beenden, Installer wiederum starten. Bei diversen Installationsversuchen kam es trotzdem wiederholt zu Fehlern, auch mit anderen Delphi Versionen, z.B. Delphi 7 Personal. Die Installation bei Delphi 6 hat u.U. Fehler bei JVCL200_D60.dpk und JVCL200_R60.dpk hervorgebracht. Hier half teilweise das mehrfache manuelle Bereinigen der Pfade und Löschen der nicht fertig installierten Komponenten. Aber auch eine kleine Fehlinformation im Forum könnte die Ursache sein, denn dort wurde aus Versehen im Bugfix für TJvCustomNumEdit.WMPaint ein fehlerhafter Parameter angegeben: © 2003 by Daniel Pust, 2004 Lexa Seite 15 CAO-Faktura EntwicklerDoku Seite 16 Falsch: ... and not PopupVisible, FCanvas, Message) Richtig: ... and not PopupVisible, FCanvas, Msg) Fehler mit Delphi 7 bei „JVCL200_D70.dpk“ Hier half es oft, das Package manuell zu installieren (compilieren, installieren). Zwar friert Delphi dabei manchmal ein (über den Task Manager beenden), danach lief aber kurioserweise die install.bat fehlerfrei durch. Wer das erklären kann, möge sich melden. Einzelnen Berichten zufolge hat u.U. auch das manuelle Bereinigen der Windows Registry Abhilfe gebracht. Vermutlich ist das immer dann der Fall, wenn verschiedene Delphi Versionen installiert sind bzw. waren oder ersetzt wurden, oder wenn man unter verschiedenen Windows Benutzerkonten arbeitet usw. Eigentlich braucht man niemals die Registry zu bemühen, die Werkzeuge innerhalb der Delphi IDE genügen im Regelfall vollkommen aus. Ausgabeverzeichnisse und sonstige Pfade Desweiteren ist auch die Überprüfung der BPL- bzw. DCP-Ausgabeverzeichnisse angeraten. Zum Abschluss noch der Tip, dass sich oft auch ein Blick in den Windows-Pfad lohnt. Arbeitsplatz Eigenschaften Erweitert Umgebungsoptionen Path. Die korrekten Delphi Bin und BPL Pfade müssen dort enthalten sein. Beim De-Installieren einer Delphi Vorgängerversion werden diese möglicherweise nicht bereinigt, so dass u.U. der falsche make Befehl zum Einsatz kommt oder dass Dateien, die ganz offensichtlich vorhanden sind, von Delphi nicht gefunden werden. Abbildung 8 - Fehlerhafter Windows Pfad: Delphi findet nichts In einem solchen Fall bitte die Windows Suchpfade überprüfen: © 2003 by Daniel Pust, 2004 Lexa Seite 16 CAO-Faktura EntwicklerDoku Seite 17 Abbildung 9 - Windows Pfade prüfen bzw. anpassen Der Windows PATH für Delphi %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem; C:\Programme\Borland\DelphiX\Bin;C:\Programme\Borland\DelphiX\Projects\Bpl ...wobei das X für die Delphiversion steht, beispielsweise Delphi6. Nach der Umstellung des Windows Suchpfades muss man sich von Windows mindestens ab- und wieder anmelden, da Windows (zumindest Windows 2000) diese homöopathisch geringe Änderung an der Systemumgebung nicht „live“ verarbeiten kann. © 2003 by Daniel Pust, 2004 Lexa Seite 17 CAO-Faktura EntwicklerDoku Seite 18 Abbildung 10 - Jedi Pfade Nun sollte die Jedi installiert sein. In den Delphi Umgebungsoptionen wurden vom Installer die Lib\JEDI\... Bibliothekspfade eingetragen. Nun prüfen wir kurz die installierten Packages: Abbildung 11 - Die Jedi im Delphi In der Komponentenleiste stellt es sich anschließend wie folgt dar: Abbildung 12 - Die Jedi in der Komponentenleiste © 2003 by Daniel Pust, 2004 Lexa Seite 18 CAO-Faktura EntwicklerDoku Seite 19 3.2.3. ZeosDBO Jetzt werden wir die ZeosDBO Komponenten für den Datenbankzugriff installieren, die in CAO-Faktura eine zentrale Rolle für die Anbindung an die Datenbank haben. Wir beschränken uns hier auf die Installation der MySQL Komponenten, auch wenn ZeosDB einiges mehr zu bieten hat. Wer sich eingehender mit der Materie beschäftigen möchte, sei auf die originale Dokumentation verwiesen. Als erstes werden wir die Datei libmysql.dll aus dem Ordner, in den wir die Komponenten entpackt haben, in libmysql.old umbenennen. Siehe hierzu auch das Kapitel 4.3. An der Datei zeos.inc fummeln wir nicht herum, dort sollte alles richtig eingestellt sein. Wir starten Delphi und fügen die Verzeichnisse dem Bibliotheksverzeichnis hinzu, Tools Umgebungsoptionen Bibliothek: Bei Bibliothekspfad clicken wir den Button mit den drei Punkten an, es öffnet sich ein weiterer Dialog in welchem wir den Pfad einstellen. Auch hier clicken wir auf die drei Punkte. Es öffnet sich noch ein Dialog, in dem der Pfad auszuwählen ist. Nach Auswählen und Bestätigen steht der Pfad im Eingabefeld und muss mit Hinzufügen in die obere Liste übernommen werden. Wir fügen die Verweise auf das ZeosDB Verzeichnis sowie auf dessen Unterordner .\common und . \dbase ein. Wenn alles geklappt hat, sollten die drei Pfade wie im nächsten Bild gezeigt in der Liste eingetragen sein. © 2003 by Daniel Pust, 2004 Lexa Seite 19 CAO-Faktura EntwicklerDoku Seite 20 Bei den nächsten Komponenten werden wir nur noch davon sprechen, den Pfad als Bibliothekspfad einzustellen. Das Vorgehen ist dasselbe wie eben beschrieben. Jetzt müssen für die ZeosDB Komponenten noch die Entwurfs- und Laufzeit-Packages compiliert werden und dann stehen uns die Komponenten zur Verfügung. Wir werden dazu das erste Package laden und compilieren und öffnen die Datei ZCommon6.dpk (Delphi 6) aus dem Verzeichnis, in welches wir die Komponenten entpackt haben, mit Datei Öffnen. Nach dem Laden öffnet sich ein zusätzliches Fenster: In diesem Fenster sind für uns zwei Schaltflächen von Interesse. Als erstes müssen wir ein Package compilieren Compilieren und, wenn es sich um ein Entwurfspackage handelt, dieses auch noch Installieren. Im vorliegenden Fall handelt es sich um ein Laufzeitpackage, so dass wir nur compilieren müssen. Dieses Fenster können wir danach schließen. Eine eventuelle Frage von Delphi, ob gespeichert werden soll, bestätigen wir mit JA. Jetzt öffnen wir die Datei ZDbware6.dpk © 2003 by Daniel Pust, 2004 Lexa Seite 20 CAO-Faktura EntwicklerDoku Seite 21 Da es sich hierbei um ein Entwurfszeitpackage handelt, steht uns nun auch die Installation zur Verfügung, also zuerst Compilieren und danach Installieren. Auch dieses Fenster können wir nach Fertigstellung schließen. Als letztes kommen die eigentlichen Komponenten für den Zugriff auf die MySQL Datenbank aus der Datei ZMySql6.dpk 4 an die Reihe, die auch compiliert und installiert werden. Wenn alles fehlerfrei funktioniert hat, sollten in der Komponentenpalette die ZeosDB Komponenten verfügbar sein. 3.2.4. mpsDTAUS Da die mpsDTAUS Komponente nicht als Package vorliegt, ist das Vorgehen zur Installation etwas anders, als bei den Packages. Als erstes öffnen wir den Dialog zur installation der Komponente im Menü mit Komponente Komponente installieren... 4 Bitte nicht mit ZMsSql6.dpk verwechseln! © 2003 by Daniel Pust, 2004 Lexa Seite 21 CAO-Faktura EntwicklerDoku Seite 22 Durch Clicken von Durchsuchen öffnet sich ein Datei-Browser Dialog, in dem wir aus dem Verzeichnis, in das wir die mpsDTAUS Komponente entpackt haben, die Datei mpsDTAUS.pas auswählen und mit Öffnen bestätigen. Jetzt sollte der Dialog wie oben aussehen. Den Namen des Package, in das die Komponente installiert wird, lassen wir so wie von Delphi vorgegeben (dclusr.dpk). Nach Bestätigen mit OK kommt noch eine Abfrage von Delphi, die wir mit JA bestätigen. Jetzt steht die mpsDTAUS Komponente in der Komponentenpalette zur Verfügung, zu erkennen am Bundesadler Symbol. Nun noch den Bibliothekspfad auf den mpsDTAUS Ordner der setzen, fertig. 3.2.5. TVolgaDBEdit Als Package (also wie bei ZeosDB) wird jetzt die Datei dVolgaPD6.dpk aus dem Ordner, in den wir das deutsche VolgaDBEdit von Jan entpackt haben, installiert. Den Bibliothekspfad setzen wir auf das Verzeichnis, in dem dVolgaPD6.dpk liegt. 3.2.6. ZipMaster VCL Diese Komponente wird ebenfalls als Package installiert. Die erforderliche Datei ZipMaster.dpk liegt im Ordner .\VCL. Wir setzen die Bibliothekspfade auf den Ordner mit den entpackten Dateien und auf die Unterordner .\VCL und .\LANG. Fehlende Ressourendatei? Beim Öffnen des Pakets erhalten wir evtl. eine Information, das eine Ressourcendatei nicht gefunden wird. Dies werden wir lässig ignorieren, denn sie wird von Delphi erstellt. Einen Screenshot benötigen wir an dieser Stelle nicht. Wer die Komponente in der Leiste nicht findet, hat wahrscheinlich unter falschem Namen gesucht: sie heißt Delphi ZIP. Wer unter Z wie Zip gesucht hat, lag also etwas daneben. © 2003 by Daniel Pust, 2004 Lexa Seite 22 CAO-Faktura EntwicklerDoku Seite 23 3.2.7. CAO Komponenten Zuerst fügen wir der Umgebung den Bibliothekspfad CAOKomponenten hinzu. Die CAO Komponenten werden wie die mpsDTAUS Komponente installiert, also Komponente installieren, Package compilieren und das Ganze für jede der folgenden Dateien. • btJvxRichPopup.pas • CaoDBGrid.pas • CaoGroupBox.pas • CaoMultiLang.pas • CaoSecurity.pas • email32.pas • XPMenu.pas • (SortGrid.pas) • EuroDMEdit • Historyc Wer den Vorschlag vom Beginn der Doku befolgte (editieren der Procedure Register, siehe Seite 11), findet die Komponenten nach erfolgreicher Installation unter CAO oder einem entsprechend selbst vergebenen Namen in der Komponentenpalette (z.B. CAO-Faktura). Zur Erinnerung: Obwohl die Komponente SortGrid.pas mit der zugehörigen SortGridPreview.pas im Ordner der CAO Komponenten enthalten ist, ist diese keine „echte“ CAO Komponente, sondern Bestandteil der ZipMaster VCL, deshalb wird sie auch genau dort installiert. Einzige von Jan vorgenommene Modifizierung ist die wechselnde Hervorhebung der Zeilen durch verschiedene Farben bzw. Schriftarten. Wir müssen diese wie oben beschrieben installieren, um in den Genuss der Änderungen zu kommen. © 2003 by Daniel Pust, 2004 Lexa Seite 23 CAO-Faktura EntwicklerDoku Seite 24 Abbildung 13 - Die CAO Komponenten sind installiert Das zuvor erwähnte, modifizierte SortGrid erscheint im (bereits installierten) Delphi-Zip: 3.2.8. NewExDBGrid Ist wieder ein Package. Hier bitte die Datei dGJLSoftware_D6_JEDI.dpk verwenden, da diese für die Verwendung mit CAO-Faktura angepasst wurde und speziell mit der JediVCL zusammenarbeitet. Das Original verwendet die veraltete RxLib, die aus dem CAO Projekt herausgenommen wurde. Den Bibliothekspfad setzen wir auf den Unterordner Lib\NewExDBGrid. © 2003 by Daniel Pust, 2004 Lexa Seite 24 CAO-Faktura EntwicklerDoku Seite 25 3.2.9. SynEdit Noch ein Package. Die zuständige Datei ist SynEdit_D6.dpk aus dem Ordner Packages. Den Bibliothekspfad setzen wir auf den Unterordner \Source des Packages. Beim Öffnen des Packages erscheint möglicherweise eine Information, dass eine Ressourcendatei nicht gefunden wird. Die Datei wird erzeugt, wir ignorieren die Meldung. Nach erfolgreicher Installation erschlägt uns ein riesiges Erfolgsfenster: Wenn uns auf dem Weg dorthin Warnungen der folgenden Art begegnen, können wir diese getrost ignorieren: [Warnung] Die Unit 'SynHighlighterUnreal' wurde implizit in Package 'SynEdit_D6' importiert [Warnung] Die Unit 'SynHighlighterIDL' wurde implizit in Package 'SynEdit_D6' importiert In der Komponentenleiste ist SynEdit nun 2x zu sehen unte SynEdit und SynEditHighlighters. 3.2.10. tvPlanit Wir verwenden zur Installation der Planit Komponente die Datei v103_d60.dpk aus dem Ordner packages. Für Delphi 5 und 7 existieren speziell angepasste Versionen des Pakets: v103Cao50.dpk und v103Cao70.dpk. Den Bibliothekspfad setzen wir auf den Unterordner \Source. Über Datei öffnen installieren wir das Package auf dem inzwischen vertrauten Weg. Nach dem Öffnen passt Delphi 6 das Paket an die installierten Komponenten an: © 2003 by Daniel Pust, 2004 Lexa Seite 25 CAO-Faktura EntwicklerDoku Seite 26 Das Package wird geöffnet und es erscheinen Warnungen, die man sich interessehalber durchlesen kann: [Warnung] Die Unit 'VpCaoTaskEditDlg' wurde implizit in Package 'V103_D60' importiert [Warnung] Die Unit 'VpCaoEvntEditDlg' wurde implizit in Package 'V103_D60' importiert Wenn jedoch der folgende Fehler auftritt ... [Fehler] Ein 'Never-build' Package 'V103_D60' benötigt 'Always-build' Package 'JVCL200_R60' ... müssen wir das Package modifizieren. Wir öffnen dazu in der Delphi IDE die Package Datei v103_d60.dpk. Am Ende der Compiler-Direktiven finden wir {$IMPLICITBUILD OFF} Wir ändern OFF in ON und speichern die Datei mit dieser Änderung. {$IMPLICITBUILD ON} Anschließend wiederholen wir die Installation. Nach click auf Compilieren bleiben nur noch die zwei inzwischen bekannten (harmlosen) Warnungen übrig, das Package wurde fehlerfrei compiliert. Nun noch installieren, dann meldet uns ein wiederum recht großformatiger Dialog den Erfolg. Die Komponente tvplanit ist anschließend unter Visual PlanIt in der Komponentenleiste zu sehen: © 2003 by Daniel Pust, 2004 Lexa Seite 26 CAO-Faktura EntwicklerDoku Seite 27 Mögliche Fehlerquelle: Wenn von Delphi eine fehlerhafte 16-Bit Ressource bemängelt wird, hat man eine veraltete Komponente erwischt. Bitte eine aktuelle Version aus dem CAO Download bzw. CVS besorgen. 3.3. MS XML 4: Unit erstellen Für die Shop-Module benötigen wir die Unit MSXML2_TLB.PAS, die wir uns erzeugen müssen. Als erstes besorgen wir uns von http://www.microsoft.com/downloads/details.aspx?FamilyID=3144b72bb4f2-46da-b4b6-c5d7485f2b42&DisplayLang=de die ActiveX Library für XML und führen das Setup für die MS-XML Aktualisierung aus, indem wir die Microsoft Installer Datei (*.MSI) durch Doppelclick starten. Nach erfolgreichem Setup wählen wir in Delphi unter Projekt Typenbibliothek den Eintrag Microsoft XML, v4.0 (Version 4.0) und clicken auf Installieren. Falls wir dazu aufgefordert werden, lassen wir eine bereits vorhandene Datei ersetzen: © 2003 by Daniel Pust, 2004 Lexa Seite 27 CAO-Faktura EntwicklerDoku Seite 28 Dann werden wir nach dem Package gefragt, in welches die Datei eingebunden werden soll. Wir belassen es bei der Voreinstellung: Jetzt bekommen wir das Package angezeigt, in das die MSSML2_TLB eingefügt wurde. Mit Compilieren werden die Komponenten eingebunden. Wenn alles funktioniert hat, erscheinen in der Komponentenpalette unter ActiveX eine ganze Menge mehr als die 3 bis 4 Komponenten, die Delphi standardmäßig mitbringt. 3.4. Komponenteninstallation beenden An dieser Stelle beenden wir Delphi und starten den Rechner neu. Schließlich arbeiten wir unter Windows und diesem geben wir nun die Gelegenheit, seinen fragmentierten Speicher neu zu ordnen. © 2003 by Daniel Pust, 2004 Lexa Seite 28 CAO-Faktura EntwicklerDoku Seite 29 Übersicht der Suchpfade Zum Schluss folgt an dieser Stelle zur Überprüfung eine Übersicht der Suchpfade, die nun in den Umgebungsoptionen Bibliothek Bibliothekspfad enthalten sein sollten. Den Pfad zu Delphi kann man durch den Platzhalter ersetzen, den Delphi benutzt, also statt C:\Programme\Borland\Delphi6\XYZ kann man $(DELPHI)\XYZ verwenden. Der Platzhalter $(DELPHI) steht für den kompletten Pfad zum installierten Delphi, also beispielsweise C:\Programme\Borland\Delphi6. • $(DELPHI)\Lib; • $(DELPHI)\Bin; • $(DELPHI)\Imports; • $(DELPHI)\Projects\Bpl; • C:\Programme\Borland\Delphi6\Lib\Jedi\JCL\Source; • C:\Programme\Borland\Delphi6\Lib\Jedi\JVCL\Source; • C:\Programme\Borland\Delphi6\Lib\Jedi\JVCL\Common; • C:\Programme\Borland\Delphi6\Lib\INDY9\Source; • C:\Programme\Borland\Delphi6\Lib\INDY9\D6; • C:\Programme\Borland\Delphi6\Lib\zeosdbo; • C:\Programme\Borland\Delphi6\Lib\zeosdbo\dbase; • C:\Programme\Borland\Delphi6\Lib\zeosdbo\common; • c:\programme\borland\delphi6\lib\mpsdtaus; • C:\Programme\Borland\Delphi6\Lib\Volga\Source; • C:\Programme\Borland\Delphi6\Lib\ZipMaster; • C:\Programme\Borland\Delphi6\Lib\ZipMaster\Lang; • C:\Programme\Borland\Delphi6\Lib\ZipMaster\VCL; • C:\Programme\Borland\Delphi6\Lib\CAO-Komponenten; • C:\Programme\Borland\Delphi6\Lib\New ExDBGrid; • C:\Programme\Borland\Delphi6\Lib\SynEdit\Source; • C:\Programme\Borland\Delphi6\Lib\tvplanit\source Der Pfad zum GNU-Source von CAO sollte NICHT an dieser Stelle (also in den globalen Einstellungen) gesetzt sein, sondern in der Projektumgebung. Ebenso kann man den Pfad zu den Komponenten, die man ausschließlich für die Arbeit an CAO-Faktura benötigt, in den Projektoptionen setzen und nicht in den globalen Optionen „herumschleppen“. Dies trägt zur besseren Übersicht bei, wenn man nebenher an anderen Projekten arbeitet. Jeder Programmierer wird dort seine eigene Strategie entwickeln und einsetzen. © 2003 by Daniel Pust, 2004 Lexa Seite 29 CAO-Faktura EntwicklerDoku Seite 30 4. Der MySQL Server und Werkzeuge Wir gehen davon aus, dass der Server bereits installiert ist. Eine Installationsanleitung ist auf www.mysql.com zu finden. Wir gehen hier nicht weiter auf dieses Thema ein, denn es gibt inzwischen sehr gute, auch deutschsprachige, Dokumentationen zu diesem und weiterführenden Themen.5 4.1. Das Werkzeug „MySQL-Front“ Jetzt ist eine gute Gelegenheit, ein Tool zu installieren, welches uns die Verwaltung von Datenbanken sehr vereinfacht. Wir besorgen uns von der CAO Homepage die Datei MySQL-Front_2.5_Setup.exe und starten diese, um MySQL Front 2.5 zu installieren. Das geht fix und problemlos.6 Nach der Installation starten wir das Tool und nehmen die ersten Einstellungen für unseren Server vor: Durch Click auf New erstellen wir eine Verbindung, der Name erscheint unter Description (Beschreibung). Danach tragen wir den Hostnamen oder die IP-Adresse (bei lokaler Installation localhost oder 127.0.0.1) des MySQL Servers und einen gültigen Benutzer mit seinem Passwort ein. Bei der Windowsinstallation von MySQL ist der Benutzer root standardmäßig ohne Passwort vorhanden. Unsere Verbindung können wir nun mit Save speichern. Jetzt können wir mit Connect versuchen, die Verbindung aufzubauen. Wenn das funktioniert, ist der Server erreichbar und dem weiteren Vorgehen steht nichts mehr im Weg. Achtung: Wie bereits erwähnt, wird bei der Installation von MySQL Server ein Standard-Benutzer root ohne Passwort eingerichtet. Dieser Benutzer ist der Ober-Chef aller MySQL Datenbanken, er darf jede Operation, auch jede kritische bzw. zerstörerische, Operation ausführen. Auf produktiv eingesetzten Systemen, insbesondere in Mehrbenutzerumgebungen, sollten daher immer entsprechende Benutzerkonten mit Passwörtern erstellt und verwendet werden. Die Vergabe eines Passworts für root ist natürlich Pflicht. MySQL-Front können wir nun beenden. 5 Ein sehr gutes Buch zum Thema MySQL ist das offizielle Handbuch, von Michael „Monty“ Widenius, David Axmark, MySQL AB Documentation Team, 1. Auflage 2002, erschienen bei mitp, ISBN 3-8266-0888-7. Hier erfährt man viel zum Thema MySQL Installation / Bedienung. Dieses Handbuch dürfte inzwischen überarbeitet worden sein, bitte nach aktuellen Ausgaben suchen. Auch die Internetseite des Herstellers bietet eine Fülle an sehr guten Dokumentationen zu jedem erdenklichen Thema, von denen viele inzwischen auch auf Deutsch verfügbar sind, wie das offizielle Handbuch, das als Online Version kostenlos downloadbar ist! Ein Muss für jeden ernsthaften Datenbankprogrammierer! 6 MySQL Front gibt es inzwischen in der Version 3.x und ist seither keine freie Software mehr. Auch die Stabilität lässt noch sehr zu wünschen übrig, weswegen die Verwendung nicht ratsam ist. © 2003 by Daniel Pust, 2004 Lexa Seite 30 CAO-Faktura EntwicklerDoku Seite 31 4.2. Bearbeiten von Tabellen Wenn CAO-Faktura startet, wird auf dem Datenbank-Server die Datenbank mit den nötigen Tabellen erzeugt, falls noch keine vorhanden ist. Jedoch ist es für Programmierer hin und wieder nötig, Aktualisierungen von Tabellendaten manuell auf dem Server einzuspielen. Dazu verwenden wir MySQL-Front mit einer passend vorbereiteten *.sql Datei für Manipulationen an der Datenbank. Diese sql Datei nennt man auch Script, denn sie ist eine reine Textdatei und enthält SQL-Befehle, mit denen der Server gefüttert wird. Zur Dokumentation solcher Dateien können natürlich auch Kommentare enthalten sein. Wir starten MySQL-Front und verbinden uns mit unserem Server. Auf der linken Seite haben wir eine Auswahl aller auf dem Server angelegten Datenbanken, hier wählen wir die von uns verwendete Datenbank aus. Auf der rechten Seite gibt es einen Reiter Query diesen clicken wir an, jetzt sollten wir folgendes Bild haben: Mit dem Button Load SQL from Textfile können wir jetzt die .sql-Datei laden, diese wird im Fenster SQL-Query angezeigt. Mit dem Execute SQL Button wird das SQL-Script ausgeführt. Falls Fehler im Script enthalten sind, werden diese im unteren Bereich angezeigt. Manchmal ist ein Zurückblättern in diesem Bereich sehr wertvoll, um Fehler aufzuspüren. Bei längeren Scripten kann man leicht die eine oder andere Meldung verpassen und das Aufspüren von Fehlern, die daraus resultieren, ist alles andere als unterhaltsam. © 2003 by Daniel Pust, 2004 Lexa Seite 31 CAO-Faktura EntwicklerDoku Seite 32 4.3. Probleme mit der „libmysql.dll” Die Datei libmysql.dll ist eine immens wichtige Datei beim Zugriff auf den Datenbank-Server und kann die schönsten Probleme verursachen, wenn sie nicht zum Server passt oder mehr als einmal auf dem PC vorhanden ist. Wenn der MySQL-Server lokal installiert wurde, kann man versuchen die libmysql.dll aus dem ./bin Verzeichnis des Servers zu verwenden. Bei der Verwendung eines Windows Remote-Servers kann man die Datei von diesem kopieren und verwenden. Die sicherste Methode ist jedoch, wenn man die in einem CAO Installerpaket enthaltene Datei verwendet. Man muss zudem sicherstellen, dass CAO, egal ob im Delphi Debugger oder als Programm, die passende libmysql.dll verwendet, z.B. indem man in jeden Ordner, der eine CAO EXE enthält, die mit CAO ausgelieferte Datei kopiert. Andere libmysql.dll Dateien vom PC zu löschen ist nicht nötig und evtl. sogar gefährlich, denn es kann sein, dass andere Programme darauf angewiesen sind! Oft kollidieren die DLL's im Windows System32 Ordner. Auch deshalb ist es immer eine gute Idee, die „richtige“ DLL direkt im Programmordner unterzubringen, wie CAO es tut. 5. Der PostgreSQL Server [ ... ist bald native für Windows verfügbar ] 6. Datenbankstruktur [ Dieses Kapitel soll daran erinnern, dass die Doku niemals vollständig sein kann ] © 2003 by Daniel Pust, 2004 Lexa Seite 32 CAO-Faktura EntwicklerDoku Seite 33 7. Konfiguration von CAO-Faktura 7.1. CAO Faktura Version 1.2 Wird CAO-Faktura 1.2.x gestartet und es ist noch kein Mandant angelegt, werden dazu aufgefordert, einen solchen anzulegen. CAO präsentiert uns für die nötigen Daten folgende Eingabemaske: Abbildung 14 - Einen Mandanten anlegen Für den Mandanten können wir einen beliebigen Namen wählen, der natürlich eine Zuordnung zu dem Unternehmen, das CAO-Faktura nutzt, ermöglichen sollte, z.B. Test Media AG. Einige Zeichen läßt CAO im Namen des Mandanten nicht zu, das werden wir dann schon merken. Die weitere Konfiguration gestaltet sich genau so wie bei MySQL Front, denn für jede Datenbankverbindung werden immer dieselben Parameter benötigt. Bei Server wird der Hostname oder die IPAdresse des Rechners eingetragen, auf dem der MySQL Server läuft. Für einen lokal installierten Server (CAO und MySQL laufen auf demselben Rechner) geben wir hier localhost ein. Der vorgegebene Port 3306 ist der Standardport und kann so übernommen werden. CAO versucht eine Datenbank anzulegen. Den Namen können wir gemäß den Konventionen für MySQL Datenbank Namen angeben, z.B. db_cao Der Benutzer muss auf dem MySQL Server bereits eingerichtet sein und bestimmte Rechte auf dem Server haben, dazu zählt auf jeden Fall das Recht zu schreiben, Tabellen anzulegen und Tabellen zu indizieren. Für einen Windows MySQL Server, der ohne Veränderung der Standard-Einstellungen gestartet wurde, kann der Benutzer root (ohne Passwort) verwendet werden. © 2003 by Daniel Pust, 2004 Lexa Seite 33 CAO-Faktura EntwicklerDoku Seite 34 Die eingetragenen Daten lassen sich erst speichern, wenn CAO erfolgreich eine Verbindung aufbauen konnte. Nach click auf Einstellungen testen werden wir über Erfolg oder Misserfolg informiert: Das die Datenbank nicht existiert, ist keine Fehlermeldung, denn wird diese im weiteren Verlauf anlegen. Fehlermeldungen der folgenden Art weisen auf Verbindungs- oder Rechteprobleme hin: © 2003 by Daniel Pust, 2004 Lexa Seite 34 CAO-Faktura EntwicklerDoku Seite 35 Das erfordert, dass wir unsere Einstellungen überprüfen. IP-Adresse bzw. Hostname, Port, Benutzername und Passwort. Es kann auch sein, dass die Benutzerdaten korrekt sind, dann fehlen uns entsprechende Zugriffsrechte, um Datenbanken anzulegen o.ä. Wenn wir uns erfolgreich verbinden konnten, wird folgender Dialog angezeigt: Jetzt clicken wir auf den Mandanten Test Media AG. Auf der rechten Seite bekommen wir die Daten noch einmal detailliert angezeigt. Diese Daten übernehmen wir mit dem Button Übernehmen. Wir bekommen jetzt die Mitteilung, dass die Datenbank noch nicht zu existieren scheint und werden gefragt, ob diese angelegt werden soll. Diese Frage bestätigen wir mit JA. Die Standardformulare installieren wir ebenfalls. Jetzt sollte CAO-Faktura starten und wir können beginnen. 7.1.1. Die Konfigurationsdatei Die Datei CAO32_DB.cfg hat das Format altbekannter Windows-INI Dateien und ist in mehrere Sektionen unterteilt. [VERSION] cao32_db.exe=1.2.0.2 cao_kasse.exe=1.2.0.1 zipdll.dll=1.7.0.8 cao_update.exe=1.3.0.2 rbide.cst=1.0.0.0 rbide.eng=1.0.0.0 rbide.deu=1.0.0.0 rbprint.cst=1.0.0.0 rbprint.eng=1.0.0.0 rbprint.deu=1.0.0.0 psrbd50.bpl=0.99 unzdll.dll=1.7.0.8 changes.txt=23.01.2003 license.txt=20.01.2003 license-GER.txt=20.01.2003 © 2003 by Daniel Pust, 2004 Lexa Seite 35 CAO-Faktura EntwicklerDoku Seite 36 land.cao=1.06 plz=1.07 blz=1.08 formulare.cao=13.12.2003 [MANDANTEN] M001=Test Media AG M001_SERVER=localhost M001_USER=myself M001_PASS_C=xxxxxxxxxx M001_PASS= M001_DB=db_cao M001_PORT=3306 M001_SHOW_LOGINDIALOG=1 M001_USE_NTUSERNAME=0 CAO= Test Media AG CAO_KASSE= Test Media AG [UPDATE] FTP_PORT=21 FTP_PROXY= FTP_PROXYPORT=0 FTP_PASSIVE=0 Die Sektion [Update] diente dem automatischen Update und hat derzeit keine Funktion, weswegen wir hier nicht weiter darauf eingehen. Die Sektion [Mandanten] beinhaltet die einzelnen Mandanten, die CAO-Faktura bekannt sind. Für jeden Mandanten lassen sich die Daten für den Mandantennamen auch manuell einstellen. Im obigen Beispiel existiert ein einziger Mandant. Jeder weitere Mandant erhält eine fortlaufende, führende Mxxx Nummer. Der zweite Mandant also M002 usw. Die Einträge CAO= und CAO_KASSE= im selben Abschnitt bestimmen, welcher Mandant beim Start des zugehörigen Programmes initialisiert und geladen wird. Dort steht der Name des Mandanten (nicht der Datenbank). Wenn SHOW_LOGINDIALOG=1 gesetzt wird, blendet CAO beim Starten einen Benutzerdialog ein, in dem der Benutzername und das Passwort für den SQL Server eingegeben werden muss. Diese Option verwendet man in Mehrbenutzer-umgebungen oder wenn man den Zugriff auf Datenbanken über die MySQL Rechte-verwaltung limitieren möchte. Diese Option ist auf 0 zu setzen, wenn man keinen Login Dialog benötigt. Für die automatische Anmeldung mit Passwort an eine Datenbank beim Öffnen eines Mandanten dienen M001_PASS_C= und M001_PASS=, wobei im ersteren Parameter das verwendete Passwort verschlüsselt gespeichert wird. In diesem Fall wird ein evtl. unverschlüsseltes Passwort geblankt und in das verschlüsselte übertragen. Der Algorithmus für die Verschlüsselung eignet sich nicht für besonders schützenswerte Passwörter. In dem Fall ist ein Login-Dialog die bessere Wahl. Die Option M001_USE_NTUSERNAME=0 kann man verwenden, wenn man die Windows Login Daten für die Anmeldung verwenden möchte. Dies sollte man in der Regel vermeiden, da damit wiederum eine evtl. unbeabsichtigte, automatisierte Anmeldung möglich ist. In der Sektion [VERSION] stehen die Versionsnummern der einzelnen Dateien, diese Informationen dienten dem Online-Update als Information. Da das Online Update derzeit keine Funktion hat, sind natürlich auch diese Daten nicht wirklich von Belang. © 2003 by Daniel Pust, 2004 Lexa Seite 36 CAO-Faktura EntwicklerDoku Seite 37 7.2. CAO Faktura Version 1.3 [ Platzhalter ] 8. Compilieren der Quelle 8.1. Laden der Quelle Wir starten Delphi und laden mit Datei Projekt öffnen die Projektdatei CAO32_DB.dpr. 8.2. Die ersten Einstellungen Jetzt stellen wir als erstes den Projektpfad ein. Dieser gibt an, wo die binäre, ausführbare Datei CAO32_DB.EXE nach dem Compilieren und Linken abgelegt wird. Über Projekt Optionen gelangen wir zum folgenden Dialog: Um den Ordner, in welchem die GNU-Sourcen liegen, nicht zu überschwemmen und ein Problem mit der CFG Datei zu vermeiden, stellen wir für compilierte Binärdateien entsprechende Pfade ein. Für ausführbare, Dateien (EXE, DLL) bietet sich ein .\BIN Ordner an, compilierte Units legen wir z.B. im Ordner .\DCU ab. Die CAO32_DB.EXE darf sich auf keinen Fall im Projekt-Ordner befinden, denn Delphi überschreibt diese gnadenlos mit einer eigenen Konfigurationsdatei! Pfadeinstellungen eines CAO Projekts • Ausgabe [Pfad_zum_GNU_Code]\bin • Units [Pfad_zum_GNU_Code]\dcu © 2003 by Daniel Pust, 2004 Lexa Seite 37 CAO-Faktura EntwicklerDoku • Suchpfad Seite 38 [Pfad_zum_GNU_Code]\gnu-source 8.3. Compiler- und Linkereinstellungen Die folgenden Angaben sind lediglich als Information gedacht, einige Compilerschalter können aber durchaus von Wichtigkeit sein und unterschiedliche Programmabläufe verursachen, man denke dabei nur an die komplette Auswertung von Boolschen Bedingungen. Das Resultat kann bei unterschiedlichen Einstellungen True sein, auf einer anderen Entwicklerumgebung jedoch False. Viel Spass bei der Fehlersuche Abbildung 15 - Linker Einstellungen Delphi 5 © 2003 by Daniel Pust, 2004 Lexa Seite 38 CAO-Faktura EntwicklerDoku Seite 39 Abbildung 16 - Compiler Einstellungen Delphi 5 8.4. CAO compilieren und starten Mit F9 wird das Projekt übersetzt und gestartet. Abgesehen von Fehlern während der Compilierung, treten als häufigste Fehlerursachen falsche Einstellungen für die Verbindung zum MySQL Server auf, z.B. eine fehlerhafte CAO32_DB.CFG. Wir können sehr schnell mit MySQL-Front testen, ob wir auf den Server zugreifen und Daten in den Tabellen ändern bzw. löschen können. Diese und weitere Rechte, z.B. das Recht zum Indizieren von Tabellen, können wir auch fix in der MySQL Benutzerverwaltung überprüfen. 9. Geschafft. Was nun? Jetzt, da wir die Entwicklungsumgebung so eingerichtet haben, dass wir am Programm CAO-Faktura Änderungen und Erweiterungen vornehmen können, sollten wir sehen, dass wir den Anschluss an die Entwicklung nicht verpassen. Es sollte selbstverständlich sein, dass wir uns regelmäßig die aktuellen Sourcen besorgen und im CAO-Forum aktiv an der Entwicklung und Diskussion teilnehmen. Ein Gedanken- und Meinungsaustausch mit den Entwicklern (und Anwendern) ist oberstes Prinzip, da sonst die Gefahr besteht, dass die Entwicklung an einem vorbei läuft. Also schlagen wir uns von nun an die Nächte um die Ohren und hören uns früh am Morgen das fürchterliche Gebrüll der Vögel an. Wir versuchen das, was CAO noch nicht kann oder was uns nicht gefällt, zu ändern und zu ergänzen. Neue Ideen sollte man mit den anderen Entwicklern abstimmen, um zu vermeiden, dass zwei das Gleiche tun und letztlich drei nicht kompatibel sind. Auch wenn sich jemand mit der Beseitigung eines Programmfehlers beschäftigen möchte, ist es ratsam, das Vorhaben den anderen Entwicklern im Forum bekannt zu geben. © 2003 by Daniel Pust, 2004 Lexa Seite 39 CAO-Faktura EntwicklerDoku Seite 40 Ich weiss nicht, was ich machen soll Dieses Argument gilt nicht . An Ideen kann kein Mangel herrschen. Das Forum, der dort enthaltene Feature-Request und der BugReport sind hervorragende Anlaufstellen, um sich über Wünsche und Programmfehler zu informieren. 9.1. Probleme? Fragen? Unklarheiten? Vorschläge und Kritiken zu dieser Doku bitte wir, an den bzw. die Autoren zu senden. Viele Probleme und Fehler beim Compilieren wurden bereits im Forum beschrieben, deshalb führt im Falle eines Falles der erste Weg dorthin. Hinweise zu Fehlern in der vorliegenden Doku oder Anregungen, Lob, Kritik etc. nehmen die Autoren gern entgegen. Wer Fehler im Forum melden oder sich mit anderen Entwicklern unterhalten möchte, sollte wissen, wovon er spricht und es die Mitleser bzw. Helfer ebenfalls wissen lassen. Ansonsten zwingt man diejenigen, die helfen wollen, zu vermeidbaren und zeitraubenden Rückfragen. Das bezieht sich besonders auf die Versionsnummern der Komponenten, des MySQL-Servers und nicht zuletzt nachvollziehbare Fehlerbeschreibungen (Debugger, Screenshots, Variableninhalte usw.). Viele Informationen kann man beispielsweise im CAO Menü unter Hilfe Info Versionsinfo erlangen, sofern es gelungen ist, CAO zum Laufen zu bringen. Dem folgenden Dialog lassen sich viele wichtige Angaben entnehmen: 9.2. Delphi Links 9.2.1. Delphi Linkliste • http://www.faqsen.de/delphi/links.jsp 9.2.2. Empfehlungsliste • http://delphiworks.sourceforge.net/delphians.best/index.htm © 2003 by Daniel Pust, 2004 Lexa Seite 40 CAO-Faktura EntwicklerDoku Seite 41 9.2.3. Delphi für Anfänger • http://www.f.shuttle.de/f/herder/Delphi_Anl/ 9.2.4. Deutsche Delphi-Foren • http://www.delphi-forum.de/ • http://www.chaho.de/ • http://www.delphi-treff.de/ • http://www.delphipraxis.net/index.php • http://www.tutorials.delphi-source.de/ • http://www.grundlagen.delphi-source.de/ • http://www.delphi-fundgrube.de/ • http://home.t-online.de/home/ralf.herlitze/dtips.htm 9.3. Links für Datenbankentwickler • [ ... Vorschläge !?...] 9.3.1. MySQL • www.mysql.com • 9.3.2. PostgreSQL • 9.3.3. SQL Tools • 9.3.4. SQL Foren • 9.4. Sonstiges 9.4.1. CVS • http://www.oreilly.de/catalog/cvsger/chapter/ch02.pdf • http://www-t.zhwin.ch/~smr/cvstools/anleitung.pdf • http://www.informatik.unimannheim.de/informatik/pi4/stud/veranstaltungen/ss2002/pm/dokumente/pmcvs-1.pdf • http://www-in.fh-swf.de/fb-in/media/free/roth.cvs.pdf • 10. Anhang 10.1. Index © 2003 by Daniel Pust, 2004 Lexa Seite 41 CAO-Faktura EntwicklerDoku Quellen Sourcen Seite 42 5 10.2. Abbildungen Abbildung 1 - Einstellungen für den CVS Server 7 Abbildung 2 - Optimieren der Übertragung 8 Abbildung 3 - Proxy definieren, wenn nötig 8 Abbildung 4 - Editor und Passwortdatei 9 Abbildung 5 - Erfolgreicher Login und Checkout 10 Abbildung 6 - Verzeichnisse der CAO Komponenten Abbildung 7 - Indy 9 installiert 14 13 Abbildung 8 - Fehlerhafter Windows Pfad: Delphi findet nichts Abbildung 9 - Windows Pfade prüfen bzw. anpassen Abbildung 10 - Jedi Pfade 16 17 18 Abbildung 11 - Die Jedi im Delphi 18 Abbildung 12 - Die Jedi in der Komponentenleiste 18 Abbildung 13 - Die CAO Komponenten sind installiert 24 Abbildung 14 - Einen Mandanten anlegen 33 Abbildung 15 - Linker Einstellungen Delphi 5 38 Abbildung 16 - Compiler Einstellungen Delphi 5 39 10.3. GNU Free Documentation License This is an unofficial translation of the GNU Free Documentation License into German. It was not published by the Free Software Foundation, and does not legally state the distribution terms for documentation that uses the GNU FDL--only the original English text of the GNU FDL does that. However, we hope that this translation will help German speakers understand the GNU FDL better. Dies ist eine inoffzielle deutsche Übersetzung der GNU Free Documentation License. Sie ist nicht von der Free Software Foundation herausgegeben und erläutert nicht die Bedingungen der GNU FDL -- Dies tut nur der original englische Text der GNU FDL. Dennoch hoffen wir, dass diese Übersetzung mit dazu beiträgt deutschsprachigen Personen das Verstehen der GNU FDL zu erleichtern. Präambel Der Zweck dieser Lizenz ist es, ein Handbuch, Textbuch oder ein anderes zweckdienliches und nützliches Dokument frei, im Sinne von Freiheit, zu machen; jedermann die Freiheit zu sichern, es zu kopieren und mit oder ohne Änderungen daran, sowohl kommerziell als auch nicht kommerziell weiter zu verbreiten. Weiterhin sichert diese Lizenz einem Autor oder Verleger die Möglichkeit, Anerkennung für seine Arbeit zu erhalten ohne für Änderungen durch Andere verantwortlich gemacht zu werden. Diese Lizenz ist eine Art des "copyleft", was bedeutet, daß von diesem Dokument abgeleitete Werke ihrerseits in derselben Weise frei sein müssen. Dies vervollständigt die GNU General Public License, die eine "copyleft"-Lizenz ist, und für freie Software entworfen wurde. © 2003 by Daniel Pust, 2004 Lexa Seite 42 CAO-Faktura EntwicklerDoku Seite 43 Diese Lizenz wurde für Handbücher für freie Software entworfen, denn frei Software braucht freie Dokumentation: Ein freies Programm sollte von Handbüchern begleitet sein, die dieselben Freiheiten bieten, die auch die Software selbst bietet. Diese Lizenz ist aber nicht auf Softwarehandbücher beschränkt; vielmehr kann sie für jede Art von textuellen Werken verwendet werden, unabhängig davon, was das Thema ist, oder ob es als gedrucktes Buch veröffentlicht wurde. Wir empfehlen diese Lizenz prinzipiell für Werke, die als Anleitungen oder Referenzen dienen sollen. 1. Anwendbarkeit und Definitionen Diese Lizenz findet Anwendung auf jedes Handbuch oder andere Werk, unabhängig von dem Medium, auf dem es erscheint, das einen vom Rechteinhaber eingefügten Hinweis enthält, der besagt, daß das Werk unter den Bedingungen dieser Lizenz verbreitet werden darf. Ein solcher Hinweis gewährt eine weltweit gültige, tantiemenfreie und zeitlich unbefristete Lizenz, die es gestattet das Werk, unter den hier festgelegten Bedingungen, zu nutzen. Der Begriff Dokument wird im Folgenden für alle solche Handbücher und Werke verwendet. Jede Person kann Lizenznehmer sein und wird im Folgenden mit Sie angesprochen. Sie akzeptieren diese Lizenz, wenn Sie ein Dokument derart kopieren, verändern oder verteilen, daß Sie gemäß den Gesetzen zum Copyright die Erlaubnis benötigen. Eine modifizierte Version des Dokumentes steht für jedes Werk, das das Dokument als Ganzes oder in Teilen enthält, sowohl auf Datenträger kopiert, als auch mit Änderungen und/oder in andere Sprachen übersetzt. Ein zweitrangiger Abschnitt ist ein benannter Anhang oder eine Enleitung des Dokumentes, der sich ausschließlich mit dem Verhältnis des Autors oder Verlegers des Dokumentes zu dem eigentlichen Thema des Dokumentes (oder damit zusammenhängender Dinge) beschäftigt, und der nichts enthält, das direkt zu dem eigentlichen Thema gehört. (Wenn das Dokument beispielweise ein Buch über Mathematik ist, dann darf ein zweitrangiger Abschnitt nichts über Mathematik enthalten). Dies kann eine historische Beziehung zu dem Thema, oder damit zusammenhängender Dinge, oder von gesetzlicher, gesellschaftlicher, philosophischer, ethischer oder politischer Art sein, die das Thema betreffen. Die unveränderlichen Abschnitte sind benannte zweitrangige Abschnitte, deren Titel als unveränderlicher Abschnitt in dem Lizenhinweis, der das Dokument unter diese Lizenz stellt, aufgeführt sind. Wenn ein Abschnitt nicht in die oben stehende Definition eines zweitrangigen Abschnittes passt, dann ist es nicht erlaubt diesen Bereich als unveränderlichen Bereich zu kennzeichnen. Umschlagtexte sind bestimmte, kurze Textstücke, die als vorderer Umschlagtext oder als hinterer Umschlagtext in der Notiz benannt werden, die besagt, dass das Dokument unter dieser Lizenz freigegeben ist. Ein vorderer Umschlagtext kann bis zu 5 Worte enthalten, ein hinterer Umschlagtext bis zu 25 Worte. Eine transparente Kopie des Dokumentes bezeichnet eine maschinenlesbare Kopie, dargestellt in einem Format, dessen Spezifikationen allgemein verfügbar sind, und das geeignet ist das Dokument auf einfache Weise mit einem allgemeinen Texteditor oder (für Bilder, die aus Pixeln bestehen) mit einem allgemeinen Bildberabeitungsprogramm oder (für Zeichnungen) mit einem häufig verfügbaren Zeichenprogramm zu überarbeiten, und das geeignet ist es als Eingabe für Textformatierer zu verwenden, oder als Eingabe für automatische Konvertierungsprogramme, die eine Reihe von unterschiedlichen Formaten erzeugen, die ihrerseits als Eingabe für Textformatierer verwendet werden können. Eine Kopie in ein anderes transparentes Dateiformat dessen Auszeichnung oder das fehlen der Auszeichnungen derart beschaffen sind, nachfolgende Modifikationen durch die Leser zu verhindern oder zu erschweren ist nicht transparent Ein Bildformat ist nicht transparent, wenn es für eine wesentliche Menge von Text verwendet wird. Eine Kopie, die nicht transparent ist, wird als opak bezeichnet. Beispiele verwendbarer Formate für transparente Kopien schliessen einfachen ASCII-Text ohne Auszeichnungen, TeX-info Eingabe, LaTeX-Eingabeformat, SGML oder XML, sofern die verwendete DTD öffentlich verfügbar ist, sowie standardkonformes, einfaches HTML, Postscript oder PDF, die für Veränderungen durch Menschen entworfen sind, ein. Beispiele für transparente Bildformate sind u.a. PNG, XCF und JPG. Opake Formate sind unter anderen solche proprietären Formate, die nur von proprietären Textverarbeitungsprogramm gelesen und bearbeitet werden können, SGML oder XML deren DTD und/oder Verarbeitungswerkzeuge nicht allgemein verfügbar sind, und maschinengeneriertes HTML, PostScript oder PDF, das von manchen Textverarbeitungsprogrammen nur zu Ausgabezwecken erzeugt wird. Mit Titelseite wird in einem gedruckten Buch die eigentliche Titelseite sowie die direkt darauf folgenden Seiten bezeichnet, die all das in lesbarer Form enthalten, was in dieser Lizenz gefordert ist, dass es auf der Titelseite erscheinen muss. Für Werke, die in Formaten vorliegen, die keine Titelseiten haben, gilt als Titelseite der Text, der der auffälligsten Darstellung des Titels des Werkes direkt folgt, aber noch vor dem Inhalt des Werkes steht. Ein Abschnitt mit dem Titel xyz bezeichnent einen benannten Unterbereich des Dokumentes, dessen Titel entweder genau xyz ist, oder der xyz in Anführungszeichen enthält, der einem Text folgt, der xyz in eine andere Sprache übersetzt. (Hier steht xyz für einen speziellen Abschnittsnamen, der im Folgenden erwähnt wird wie"Danksagung"(Acknowledgements), "Widmung"(Dedications), "Anmerkung"(Endorsement) oder "Historie"(History).). Den Titel erhalten eines Abschnittes bedeutet, daß beim Modifizieren des Dokumentes dieser Abschnitt mit dem Titel xyz bleibt, wie es in dieser Definition festgelegt ist. Das Dokument kann direkt hinter der Notiz, die besagt, dass das Dokument unter dieser Lizenz freigegeben ist, Garantieausschlüsse enthalten. Diese Garantieausschlüsse werden so behandelt, asl seien sie als Referenzen in diese Lizenz eingeschlossen, allerdings nur um Garantien auszuschliessen: Jede andere Implizierung, die dieser Ausschluss hat ist ungültig und keine Wirkung im Sinne dieser Lizenz. 2. Datenträgerkopien Sie dürfen das Dokument auf jedem Medium sowohl kommerziell als auch nicht kommerziell kopieren und verbreiten, vorausgesetzt, daß diese Lizenz, die Copyright-Hinweise sowie der Lizenzhinweis, der besagt, daß diese Lizenz auf das Dokument anzuwenden ist, in allen Kopien reproduziert wird, und daß keine weiteren Bedingungen jeglicher Art zu denen dieser Lizenz hinzugefügt werden. Sie dürfen in den Kopien, die Sie erstellen oder verbreiten, keinerlei technische Maßnahmen treffen um das Lesen oder das weitere Kopieren zu erschweren oder zu kontrollieren. Dennoch dürfen Sie Gegenleistungen für Kopien akzeptieren. Wenn Sie eine ausreichend große Menge von Kopien verteilen, müssen Sie zusätzlich die bestimmungen von Ziffer 3 beachten. © 2003 by Daniel Pust, 2004 Lexa Seite 43 CAO-Faktura EntwicklerDoku Seite 44 Sie können ausserdem unter denselben Bedingungen, die oben angeführt sind, Kopien verleihen und sie können Kopien auch öffentlich bewerben. 3. Kopien in Stückzahlen Wenn Sie gedruckte Kopien des Dokumentes (oder Kopien auf Medien, die üblicherweise gedruckte Umschläge haben), in einer Stückzahl von mehr als 100 veröffentlichen, und der Lizenzhinweis des Dokumentes Umschlagtexte verlangt, müssen die Kopien in Hüllen verpackt sein, die alle diese Umschlagtexte klar und lesbar enthalten. Die vorderen Umschlagtexte auf dem vorderen Umschlag, die hinteren Umschlagtexte auf dem hinteren Umschlag. Beide Umschläge müssen Sie ausserdem klar und lesbar als den Herausgeber dieser Kopien benennen. Der vordere Umschlag muss den gesamten Titel darstellen, mit allen Worten gleich auffällig und sichtbar. Sie können weiteres Material den Umschlägen hinzufügen. Das Kopieren mit Änderungen, die auf Umschläge begrenzt sind, können, so lange der Titel des Dokuments erhalten bleibt, ansonsten als Datenträgerkopien behandelt werden. Wenn der vorgeschriebene Text für einen der Umschläge zu umfangreich ist um lesbar zu bleiben, sollten Sie den ersten der aufgelisteten Texte auf den aktuellen Umschlag nehmen (so viel wie vernünftigerweise möglich ist) und den Rest auf direkt angrenzenden Seiten. Wenn Sie mehr als 100 opake Kopien veröffentlichen oder verbreiten, müssen Sie entweder eine maschinenlesbare, transparente Kopie jeder opaken Kopie beilegen, oder mit bzw. in jeder opaken Kopie eine Computer-Netzwerk Adresse angeben, von wo die allgemeine, netzwerk benutzende Öffentlichkeit, Zugriff zum Download einer kompletten transparenten Kopie über öffentliche Standardnetzwerkprotokolle hat. Wenn Sie sich für die letztere Möglichkeit entscheiden, müssen Sie mit Beginn der Verbreitung der opaken Kopien in Stückzahlen, zumutbare und vernünftige Schritte unternehmen, um sicher zu stellen, daß die transparenten Kopien mindestens ein Jahr nach der Auslieferung der letzten opaken Kopie (direkt oder über einen Agenten oder Händler) dieser Ausgabe an die Öffentlichkeit, an der genannten Adresse verfügbar bleiben. Es ist erbeten, aber nicht gefordert, daß Sie ausreichend lange vor der Auslieferung einer grösseren Menge von Kopien, Kontakt mit den Autoren des Dokumentes aufnehmen, um jenen die Möglichkeit zu geben, Ihnen eine aktualisierte Version des Dokumentes zuzuleiten. 4. Modifikationen Unter den obigen Bedingungen unter Ziffer 2 und 3 können Sie modifizierte Versionen kopieren und verbreiten, vorausgesetzt, daß Sie die modifizierte Version unter exakt dieser Lizenz herausgeben, wobei die modifizierte Version die Rolle des Dokumentes einnimmt, und dadurch die weitere Modifikation und Verbreitung an jeden Lizensieren, der eine Kopie davon besitzt. Zusätzlich müssen Sie die folgenden Dinge in der modifizierten Version beachten: 1. Benutzen Sie auf der Titelseite (und auf Umschlägen, sofern vorhanden) einen Titel, der sich von dem Titel des Dokumentes und von früheren Versionen unterscheidet. (Die früheren Versionen sollten, wenn es welche gibt, in dem Abschnitt Historie aufgelistet werden.) Sie können denselben Titel wie den einer Vorgängerversion verwenden, wenn der ursprüngliche Herausgeber damit einverstanden ist. 2. Geben Sie auf der Titelseite eine oder mehrere Personen oder Einheiten, die als Autoren auftreten können, als für die Modifikationen verantwortliche Autoren der modifizierten Version, zusammen mit mindestens fünf der ursprünglichen Autoren der Ursprungsversion an (alle vorherige Autoren, wenn es weniger als fünf sind), es sei denn diese befreien Sie von dieser Notwendigkeit. 3. Geben Sie auf der Titelseite den Namen des Herausgebers als Herausgeber an. 4. Erhalten Sie alle Copyright-Vermerke des Dokumentes. 5. Setzen Sie einen passenden Copyright-Vermerk für Ihre Modifikationen direkt hinter die anderen Copyright-Vermerke. 6. Schliessen Sie direkt hinter den Copyright-Vermerken einen Lizenzhinweis ein, der die öffentliche Erlaubnis erteilt, die modifizierte Version unter den Bedingungen dieser Lizenz zu benutzen, wie es im Anhang weiter unten beschrieben ist. 7. Erhalten Sie im Copyright-Vermerk die komplette Liste der unveränderlichen Abschnitte und obligatorischen Umschlagtexte, die in dem Lizenzvermerk des Dokumentes aufgeführt sind. 8. Schliessen Sie eine unveränderte Kopie dieser Lizenz mit ein. 9. Erhalten Sie den Abschnitt "Historie". Erhalten Sie den Titel und fügen Sie einen Punkt hinzu der mindestens den Titel, das Jahr, die neuen Autoren und Herausgeber, wie sie auf der Titelseite aufgeführt sind, enthält. Sollte es keinen Abschnitt Historie geben, dann erstellen Sie einen, der Titel, Jahr, Autor und Herausgeber des Dokumentes, wie auf der Titelseite angegeben, enthält und fügen Sie einen Punkt hinzu, der die modifizierte Version wie oben dargestellt beschreibt. 10. Erhalten Sie die Netzwerkadresse, die angegeben wurde, um Zugang zu einer transparenten Kopie zu gewähren, sowie entsprechend angegebene Adressen früherer Versionen, auf denen das Dokument aufbaute. Diese Angaben können in den Abschnitt Historie verschoben werden. Sie können die Netzwerkadresse weglassen, wenn sie sich auf ein Werk bezieht, das mindestens 4 Jahre vor dem Dokument selbst veröffentlicht wurde, oder wenn der ursprüngliche Herausgeber der Version, auf die sich die Adresse bezieht, seine Erlaubnis erteilt. 11. Erhalten Sie für alle Abschnitt, die als Danksagungen (Acknowledgements) oder Widmungen (Dedications) überschrieben sind, den Titel sowie die Substanz und den Ton aller vom Geber gemachten Danksagungen und/oder Widmungen in diesem Abschnitt. 12. Erhalten Sie alle unveränderlichen Abschnitte unverändert, sowohl im Titel als auch im Text. Abschnittsnummern oder dergleichen gelten hierbei nicht als Teil des Titels. © 2003 by Daniel Pust, 2004 Lexa Seite 44 CAO-Faktura EntwicklerDoku Seite 45 13. Löschen Sie alle Abschnitte, die als Anmerkungen (Endorsements) überschrieben sind. Ein solchen Abschnitt sollte nicht in der modifizierten Version enthalten sein. 14. Benennen Sie keinen Abschnitt in Anmerkungen um, oder in einen Namen, der in Konflikt mit einem unveränderlichen Abschnitt gerät. 15. Erhalten Sie alle Garantieausschlüsse. Wenn die modifizierte Version neue Vorspannabschnitte oder Anhänge enthält, die zweitrangige Abschnitte sein können, und die kein vom Dokument kopiertes Material enthalten, können Sie, nach Ihrem Belieben, einige oder alle diese Abschnitte als unveränderliche Abschnitte in die Lizenzanmerkung der modifizierten Version aufnehmen. Diese Titel müssen sich von allen anderen Titeln unterscheiden. Sie können einen Abschnitt Anmerkungen anfügen, sofern dieser nichts als Bemerkungen, verschiedener Stellen, zu der modifizierten Version enthält. Beispielsweise Publikumsreaktionen oder eine Mitteilung, daß der Text von einer Organisation als maßgebliche Definition eines Standards geprüft wurde. Sie können einen Teil mit bis zu fünf Worten als vorderen Umschlagtext und einen mit bis zu 25 Worten als hinteren Umschlagtext an das Ende der Liste mit den Umschlagtexten der modifizierten Version hinzufügen. Nur je ein Teil für den vorderen Umschlagtext und den hinteren Umschlagtext können von jeder Einheit hinzugefügt (oder durch entsprechende Anordnung erstellt) werden. Wenn das Dokument bereits einen Umschlagtext für denselben Umschlag enthält, das von Ihnen oder der Einheit, in deren Namen Sie tätig sind, bereits früher eingefügt wurde, dürfen Sie keine neue hinzufügen. Sie können aber den alten ersetzen, wenn sie die ausdrückliche Genehmigung des Herausgebers haben, der den früheren Text eingefügt hat. Der/die Autor(en) und Herausgeber des Dokumentes geben duch diese Lizenz weder implizit noch explizit die Erlaubnis ihren Namen für Werbung in den Anmerkungen der modifizierten Version zu benutzen. 5. Dokumente Kombinieren Sie können mehrere Dokumente, die unter dieser Lizenz freigegeben sind, unter den Bedingungen unter Ziffer 4 für modifizierte Versionen miteinander kombinieren, vorausgesetzt, daß in der Kombination alle unveränderlichen Abschnitte aller Originaldokumente, enthalten sind, und daß Sie diese alle in der Liste der unveränderlichen Abschnitte der Lizenzanmerkung des kombinierten Dokumentes aufführen, sowie alle Garantieausschlüsse erhalten. Das kombinierte Werk braucht nur eine Kopie dieser Lizenz zu enthalten, und mehrere identische unveränderliche Abschnitte können durch eine einzelne Kopie ersetzt werden. Wenn es mehrere unveränderliche Abschnitte mit unterschiedlichem Inhalt aber gleichem Namen gibt, machen Sie den Namen eindeutig, indem Sie am Ende des Titels, in Anführungszeichen, den Namen des original Autors oder Herausgebers, falls bekannt, oder andernfalls eine eindeutige Nummer anhängen. Machen Sie dasselbe mit den Titeln der Abschnitte in der Liste der unveränderlichen Abschnitte im Lizenzhinweis des kombinierten Werkes. In der Kombination müssen Sie alle Abschnitte mit dem Titel Historie in den unterschiedlichen Dokumenten zu einem einzelnen Abschnit Historie zusammenführen; entsprechend verfahren Sie mit den Abschnitten Danksagungen und Widmungen. Sie müssen alle Abschnitte mit dem Titel Anmerkungen löschen. 6. Sammlungen von Dokumenten Sie können eine Sammlung von Dokumenten erstellen, bestehend aus diesem Dokument und weiteren, unter dieser Lizenz stehenden Dokumenten, wobei Sie die einzelnen Kopien dieser Lizenz in den verschiedenen Dokumenten durch eine einzelne Kopie, die in der Sammlung enthalten ist, ersetzen, vorausgesetzt, Sie befolgen in allen andern Punkten, für jedes der Dokumente, die Regeln für Datenträgerkopien. Sie können ein einzelnes Dokument aus einer solchen Sammlung herausziehen und einzeln unter dieser Lizenz verbreiten, vorausgesetzt, Sie fügen eine Kopie dieser Lizenz in das extrahierte Dokument ein, und befolgen ansonsten die Bedingungen dieser Lizenz für Datenträgerkopien. 7. Aggregation mit unabhängigen Werken Eine Zusammenstellung des Werkes, oder von Ableitungen davon, mit anderen, separaten und unabhängigen Dokumenten oder Werken, in oder auf demselben Band eines Speicher- oder Verbreitungsmediums, wird dann eine Aggregation genannt, wenn die Copyrights der Zusammenstellung nicht dazu verwendet werden die Rechte der Benutzer, die für die einzelnen Werke gewährt werden, stärker zu beschränken als dies durch die Lizenzen der einzelnen Werke geschieht. Wenn das Werk in einer Aggregation vorhanden ist, so gilt diese Lizenz nicht für die anderen Werke dieser Aggregation, die keine Ableitung des Dokumentes sind. Wenn die Bestimmungen für die Umschlagtexte aus Ziffer 3 Anwendung finden, und wenn das Dokument weniger als die Hälfte der gesammten Aggregation ausmacht, dann können die Umschlagtexte auf Seiten gesetzt werden, die das Dokument innerhalb der Aggregation umschliessen, oder auf das elektronische Äquivalent eines Umschlages, wenn das Dokument in elektronischer Form vorliegt. Andernfalls müssen sie auf gedruckten Umschlägen erscheinen, die das gesamte Werk umschliessen. 8. Übersetzung Übersetzungen werden als eine Art von Modifikationen betrachtet. Damit können Sie eine Übersetzung des Dokumentes unter den Bestimmungen von Ziffer 4 verbreiten. Um die unveränderlichen Abschnitte durch eine Übersetzung zu ersetzen, benötigen Sie die spezielle Erlaubnis des CopyrightInhabers. Sie können allerdings Übersetzungen von einigen oder allen unveränderlichen Abschnitten zu den original Versionen der unveränderlichen Abschnitte hinzufügen. Sie können eine Übersetzung dieser Lizenz und allen Lizenzhinweisen im Dokument sowie allen Garantieausschlüssen hinzufügen, vorausgesetzt, daß Sie ebenso die originale englische Version dieser Lizenz und aller Hinweise und Ausschlüsse © 2003 by Daniel Pust, 2004 Lexa Seite 45 CAO-Faktura EntwicklerDoku Seite 46 beifügen. Sollten die Übersetzung und die Originalversion dieser Lizenz oder eines Hinweises oder Ausschlusses voneinander abweichen, so hat die Originalversion vorrang. Wenn ein Abschnitt des Dokumentes als Danksagung, Widmungen oder Historie überschrieben ist, so erfordert die Forderung (Ziffer 4) den Titel dieses Abschnittes zuerhalten, die Änderung des aktuellen Titels. 9. Abschlussbestimmungen Sie dürfen dieses Dokument nicht kopieren, verändern, unterlizensieren oder verteilen mit der Ausnahme, daß Sie es ausdrücklich unter dieser Lizenz tun. Jedweder andere Versuch zu kopieren, zu modifizieren, unter zu lizensieren oder zu verbreiten ist unzulässig und führt automatisch zum Entzug der durch diese Lizenz gewährten Rechte. Dennoch verlieren jene Parteien, die von ihnen Kopien oder Rechte unter dieser Lizen erhalten haben, nicht Ihre Rechte, so lange sie sich in völliger Übereinstimmung mit der Lizenz befinden. 10. Spätere Überarbeitungen dieser Lizenz Die Free Software Foundation kann von Zeit zu Zeit neue, überarbeitete Versionen der GNU Free Dokumentation License veröffentlichen. Diese neuen Versionen werden im Geiste gleich bleiben, können sich aber in Details unterscheiden um neuen Problemen oder Besorgnissen gerecht zu werden. Siehe: http://www.gnu.org/copyleft/ Jede Version dieser Lizenz erhält eine eigene Versionsnummer. Wenn das Dokument bestimmt, daß eine bestimmt numerierte Version oder jede spätere Version dafür gilt, haben Sie die Wahl den Bestimmungen dieser speziell benannten Version zu folgen, oder jeder Version, die später von der Free Software Foundation, nicht als Entwurf, veröffentlicht wurde. Anhang: Wie Sie diese Lizenz für Ihre Dokumente verwenden können Um diese Lizenz in einem Dokument zu verwenden, das sie selbst geschrieben haben, schliessen Sie eine Kopie dieser Lizenz (eine englische Kopie des Originals anm. des Übersetzers) in Ihr Dokument mit ein, und setzen Sie den folgenden Copyrightund Lizenzhinweis gleich hinter die Titelseite: Copyright (c) YEAR YOUR NAME Persmission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Es folgt eine Übersetzung des oben stehenden Hinweises, der nur zur Klarheit hier angegeben ist ! (anm.: des Übersetzers) Copyright Jahr Ihr Name Kopieren, Verbreiten und/oder Modifizieren ist unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder einer späteren Version, veröffentlicht von der Free Software Foundation, erlaubt. Es gibt keine unveränderlichen Abschnitte, keinen vorderen Umschlagtext und keinen hinteren Umschlagtext Eine Kopie des Lizenztextes ist unter dem Titel GNU Free Documentation License enthalten. (Ende der Übersetzung des Lizenzhinweistextes) Wenn Sie unveränderlichen Abschnitte, vordere und hintere Umschlagtexte haben, ersetzen Sie die Zeile: "Es gibt keine...... Umschlagtext" durch die Folgende: Mit den unveränderlichen Abschnitten: Liste dem den Titeln der unveränderlichen Abschnitte mit dem vorderen Umschlagtext: vorderer Umschlagtext und dem hinteren Umschlagtext: hinterer Umschlagtext Wenn Sie unveränderliche Abschnitte, aber keine Umschlagtexte oder irgend eine andere Kombination der drei Bereiche haben, mischen Sie die verschiedenen Alternativen, daß sie zu Ihren Anforderungen passen. Wenn Ihr Dokument nicht-triviale Codebeispiele enthält empfehlen wir diese Beispiele parrallel unter einer freien Softwarelizenz Ihrer Wahl, beispielsweise der GNU General Public License zu lizensieren, um ihren Gebrauch in freier Software zu erlauben. 10.4. Notizen © 2003 by Daniel Pust, 2004 Lexa Seite 46