www.ewlab.de
Delphi 2006
Delphi 2005
Kylix
Delphi 6
Delphi 5
Delphi 4
Impressum
Kylix

Über das Buch

Das Buch ist Ende Juli 2001 erschienen (zum Addison-Wesley-Katalog). Es eignet sich zur Verwendung mit allen bisher erhältlichen Kylix-Ausgaben inkl. der neuen Versionen Kylix 2 und Kylix 3.

KylixPrelim

(größeres Bild)

Falls Sie dieses Buch noch nicht kennen, finden Sie hier:

Es folgen für die Leserinnen und Leser des Buchs:

Ergänzungen zum Buch

19.7.2001: Das auf Seite 35 prognostizierte Update der Hilfedateien steht bereits auf der Borland-Website bereit.

31.7.2001: Die Beispielprogramme wurden mit der Kylix Open Edition getestet. Erwartungsgemäß lassen sich alle Programme außer den Datenbank-Beispielen (im CD-Verzeichnis Kapitel7) wie unter der Professional-Edition übersetzen.

31.7.2001: Hinweise zum Kompilieren des TreeDesigners unter Delphi 5: Die für die XML-Funktionen benötigte Datei MSXML_TLB müssen Sie selbst erzeugen, indem Sie unter Projekt | Typbibliothek importieren die Datei Microsoft XML (Version 2) wählen. Auf der CD wurde leider die Konfigurationsdatei Treedsgn.dof vergessen, daher meldet der Compiler in den Units GrDoc, DocForm oder MdiForm eventuell den Fehler “Der linken Seite kann nichts zugewiesen werden”. Laden Sie dann hier die Datei Treedsgn.dof oder fügen Sie als erste Zeile der Units die Option {$J+} hinzu. Wenn Sie wie im Bild gefragt werden, ob Delphi für Sie die Deklaration von DocumentForm.FontSize als TSpinEdit korrigieren soll, antworten Sie bitte grundsätzlich mit “Nein”.

31.7.2001 / 6.8.2001 / 17.10.2001: TreeDesigner 3.5L und Delphi 6: Der TreeDesigner wurde unter Kylix 1 und Delphi 5 entwickelt und als Cross-Platform-Projekt natürlich mittlerweile unter Delphi 6 getestet. Vor einer Kompilierung unter Delphi 6 muss zuerst die für Delphi 5 vorgesehene Komponentenbibliothek nach Delphi 6 portiert werden, wofür minimale Änderungen notwendig sind:

  1. Laden des Komponenten-Packages Awd5ew.dpk in die IDE (beim Laden der dpk-Datei mit Datei|Öffnen wird das Package automatisch aktualisiert)
  2. Hinzufügen des Packages Delphi6\Lib\designide.dcp in die Requires-Klausel des Packages (siehe Bild; Verwenden Sie z.B. das Kontextmenü des Requires-Knotens)
    TDD6PortProjektmanager
    Wenn nun der Contains-Knoten im Package-Editor expandiert ist, können Sie ohne Suchen die Dateien ColorPal.pas und CPalDT.pas öffnen und wie folgt modifizieren.
  3. In den vier Dateien ColorPal.pas (Farbpalette), SBEx.pas (TScrollboxEx), Rulers.pas (Lineal-Komponenten für die TreeDesigner-Zeichenfläche) und HKeyForm.pas (Formular der Tastenkürzeleditor-Komponente): Einfügen der folgenden drei Zeilen am Anfang jeder der Dateien:

    {$ifdef MSWINDOWS}
    {$define WINDOWS}
    {$endif}
     
  4. In CPalDT.pas: Ersetzen der Unit DsgnIntf in der uses-Zeile durch DesignIntf, DesignEditors.
    (Die vollständige uses-Zeile lautet dann:

    uses
    {$ifdef Windows}
      WinProcs, WinTypes, SysUtils, Controls, Forms, ColorPal, DesignIntf, DesignEditors;
    {$else}
       ...
    {$endif})
     
  5. Das Package kann nun mit Hilfe der Schalter im Package-Editor compiliert und installiert werden.

Nun kann das Projekt Treedsgn.dpr aus dem Verzeichnis td35W geladen werden (beachten Sie den Unterschied in den Formulardateien zum Verzeichnis td35L, welches die Linux-Version enthält!).

  1. Fügen Sie am Anfang der Unit TdDefines.pas den folgenden Zusatz ein (dies ist erforderlich, da die vordefinierten Symbole in Delphi 6 von Delphi 5 abweichen):
    {$ifdef MSWINDOWS}
      {$define WINDOWS}
    {$endif}
    Versuchen Sie nun einfach, den TreeDesigner mit Start|Start auszuführen, Compiler und Delphi-IDE werden Sie dann nacheinander zu den folgenden Stellen führen, an denen kleine Änderungen notwendig sind:
  2. Meldet der Compiler in den Units GrDoc, GrDocEx oder TDXML einen Fehler beim Dateinamen MSXML_TLB, ersetzen Sie ihn durch MSXML (diese Unit ist neu im Lieferumfang von Delphi 6). In der Personal-Edition müssen Sie die Datei selbst erzeugen, indem Sie unter Projekt | Typbibliothek importieren die Datei Microsoft XML (Version 2) wählen (in diesem Fall können Sie auch den Namen MSXML_TLB beibehalten).
  3. Wenn es in SystemApiWrappers.pas zu einer Fehlermeldung kommt, ergänzen Sie die fehlerhafte Zeile wie folgt durch den Vorsatz “Windows.”:
      Windows.GetTempFileName(nil, nil, 0, PChar(result));
  4. Meldet der Compiler in den Units GrDoc, GrDocEx, DocForm oder MdiForm einen Fehler “Der linken Seite kann nichts zugewiesen werden”, fügen Sie als erste Zeile der jeweiligen Unit die Option {$J+} hinzu.
  5. Wenn Sie wie im Bild unten gefragt werden, ob Delphi für Sie die Deklaration von DocumentForm.FontSize als TSpinEdit korrigieren soll, antworten Sie bitte grundsätzlich mit “Nein”.
    TDD6PortFehlermeldung

17.10.2001: Update von Punkt 3 der obigen Portierungs-Anleitung zur Verwendung der Komponentenbibliothek unter Delphi 6: Neben der Farbpaletten-Unit müssen auch die Units von TScrollBoxEx und TRuler (SBEx.pas und Rulers.pas) sowie die Formular-Unit für den Tastenkürzeleditor (HKeyForm.pas) am Beginn um die folgenden drei Zeilen ergänzt werden:

{$ifdef MSWINDOWS}
{$define WINDOWS}
{$endif}

17.10.2001: Die auf Seite 966ff besprochenen Komponenten TDirectoryListBox und TFileTable wurden erweitert.

11.11.2001: Betrifft das Starten externer Programme mit fork (Seite 551ff): Aufgrund einer Inkompatibilität zwischen dem integrierten Debugger der Kylix-IDE (Version 1) und dem neuen Linux-Kernels 2.4.x kann es sein, dass der Aufruf von fork nicht das gewünschte Ergebnis erzielt, wenn Sie Ihre Anwendung unter einem solchen Kernel aus der Kylix-IDE heraus starten. Das Problem lässt sich provisorisch umgehen, indem Sie den integrierten Debugger abschalten (in den Debuggeroptionen ganz unten links neben dem OK-Schalter). Vor kurzem hat Borland außerdem eine Beta-Version eines Patches für Kylix 1 bereitgestellt, in dem diverse Probleme mit dem integrierten Debugger behoben werden sollen (die Beschreibung von Borland lässt vermuten, dass damit auch die bei den Beispielprogrammen des Buchs auftretenden Schwierigkeiten behoben werden, was jedoch vom Autor, der zurzeit vorzugsweise den Kernel 2.3 verwendet, noch nicht getestet wurde). Betroffen sind die Beispielprogramme AlarmClock4, AlarmClock5 (wenn hier bei einem Alarmereignis ein externes Programm gestartet werden soll), RunPrograms, execlp, FileDB (beim Ausführen des Shell-Skripts zum Anlegen einer neuen Datenbank). Ergänzung am 4.12.01: Ersten Tests zufolge tritt das Problem unter Kylix 2 nicht mehr auf.

4.12.2001: Alle Aktualisierungen zum Thema Kylix 2 finden Sie auf dieser Seite.

Fehlerkorrekturen zum Buch

Kapitel

Seite

Korrektur

Datum des Eintrags

3

 

Leider sind von einem noch nicht näher identifizierten Rechner kurz vor dem Druck alle Abbildungsnummern verfälscht worden. Die Nummerierung unter den Bildern ist nun um eins zu hoch. Wenn es also im Text heißt “siehe Abbildung 3.2”, dann ist damit die Abbildung gemeint, unter der “Abbildung 3.3” steht.

3.9.01

6.4

652

Im Listing sind zwei Zeilen des Original-Quelltextes verloren gegangen, die speziell für Kylix (nicht unter Delphi für Windows) erforderlich sind:

if Button = mbLeft then Include(Shift, ssLeft);
if Button = mbRight then Include(Shift, ssRight);

Die Erklärung dazu ist im Hinweis auf Seite 656 gegeben.

3.9.01

7.1

783

Die im Listing angegebenen Feldnamen sollten natürlich mit den in Kapitel 7.3.6 verwendeten übereinstimmen. Statt Verzeichnisnummer, Dateiname, Groesse und Datum müsste es daher DirID, FileName, FileSize und FileTime heißen.

3.9.01

7.3

829

Der im Listing angesprochene Bezeichner Felder heißt richtig cbFields (auf der CD korrekt).

3.9.01

7.3

832

Das in der Tabelle genannte Feld DirsDirID hat nicht den Typ TStringField, sondern TIntegerField.

3.9.01

7.4

845

Der letzte Absatz auf dieser Seite ist versehentlich in das Buch geraten. Die darin genannte Komponente TTable steht jedoch unter Kylix nicht zur Verfügung, der Absatz sollte daher ignoriert werden.

3.9.01

7.5.3

864

Im Listing von TdmTermine.cdsTagesTermineZEITGetText kann ein wesentlich besseres Ergebnis erzielt werden, wenn die Zeile

Text := TimeToStr(Sender.Value);

ersetzt wird durch:

DateTimeToString(Text, `hh:mm´, Sender.AsDateTime);

Besonders wichtig ist die Verwendung des Properties AsDateTime statt Value, da die CLX in Value nicht den vollständigen Zeitwert zur Verfügung stellt.

3.9.01

8.6

950

Hier wird in einem Satz die Methode WndProc erwähnt. Dieser Satz ist aus Versehen in das Buch hineingeraten, er ist lediglich unter Delphi für Windows gültig.

3.9.01

 

 

 

 

Korrekturen zu den Beispielprogrammen

15.10.01, TreeDesigner: Beim automatischen Anordnen von Bäumen kann es vorkommen, dass Teile der Bäume überlappend angeordnet werden. Dies liegt an einem kleinen Fehler in der erweiterten Anordnungsfunktion für mehrzeilige Grafikobjekte. Die Korrektur beschränkt sich auf eine einzige Zeile in der Unit GrDoc.pas. Das im Folgenden durchgestrichene Result ist durch CachedTreeTextLineCount zu ersetzen:

function TGraphicElement.CountSubTreeTextLines: Integer;
...
  if CachedNodeTextLineCount > Result CachedTreeTextLineCount then
...

15.10.01, Projekt FileDB: Um Fehler beim Öffnen der Detailtabelle zu vermeiden, vertauschen Sie in FileDBBrowserForm.pas, Methode TMainForm.OpenConnection, die Anweisungen Dirs.Open und Files.Open (Dirs ist die Haupttabelle und muss daher vor der Detailtabelle Files geöffnet werden).

4.12.01, Projekt WaveProcessingThreads (Kapitel 4.8.4): Sollte der Compiler bei der Übersetzung dieses Projekts die Unit VCanvas nicht finden können, ändern Sie in den Projektoptionen (Projekt | Optionen | Verzeichnisse/Bedingungen) unter Suchpfad die Schreibweise von ../td35l in ../td35L (großes “L”).

4.12.01: Alle Änderungen für Kylix 2 finden Sie auf einer eigenen Seite.

Hinweise zur CD-ROM

Beispielprogramme

Eine kleine Verbesserung zum Programm TerminVerwaltung finden Sie oben in der Tabelle der Korrekturen (Kapitel 7.5.3, Seite 864).

Die Beispielprogramme AlarmClock4, AlarmClock5, RunPrograms, execlp, FileDB starten gegebenenfalls externe Programme, was aber bei der Kombination von Kernel 2.4.x und dem integrierten Debugger von Kylix 1 nicht funktioniert. Dies ist kein Fehler der Beispielprogramme, sondern ein Problem von Kylix, für das Borland mittlerweile einen vorläufigen (Beta-)Patch anbietet.

Die Beispielprogramme BashRCEditor, BashRCEditor2, AlarmClock4 und AlarmClock5 versuchen beim Start eine Datei zu öffnen (/root/.bashrc bzw. ~/AlarmDemo.conf). Wenn diese Datei nicht vorhanden ist und Sie das Programm aus der Kylix-IDE starten, wird das Programm unter Umständen durch den Debugger unterbrochen. Sie können das Programm dann mit Start|Start einfach weiterlaufen lassen. Die Unterbrechung durch den Debugger können Sie durch Tools|Debugger
Options|Language Exceptions|Stop on Delphi Exceptions unterbinden.

Sonstiges

Die ausführbaren Programmversionen auf der CD wurden nicht alle mit der letzten Code-Version erzeugt. Daher kommt es bei der Ausführung von MiniSysMon zu einer unnötigen Meldung bei Programmstart. Außerdem lässt sich das Beispiel RunProgramms von CD-ROM aus nicht verwenden, weil es Schreibzugriff auf die Dateien im Programmverzeichnis benötigt. (Andere Programme können gewisse Einstellungen nicht zwischen den Programmläufen speichern, wenn Sie sie von der CD starten, z.B. AlarmClock4/5 im Falle der Alarmeinstellungen.)

 

[www.ewlab.de] [Delphi 2006] [Delphi 2005] [Kylix] [Delphi 6] [Delphi 5] [Delphi 4] [Impressum]