:: Home :: Sitemap :: Downloads :: Shop :: Impressum :: Newsletter |
||
Support |
:: NEWS ::
NShape 2.3.0 wurde veröffentlicht mit Unterstützung von eingebetteten
Bildern in NShape-Dateien, Verschieben von Diagrammen per Maus, einer
deutlichen Erhöhung der Anzahl verfügbarer Layer und vielen weiteren
Funktionen und Verbesserungen. Die Liste aller Änderungen finden Sie
hier... |
|
Delphi-Applikationen nach Kylix portierenDie sieben häufigsten Probleme bei der Migration und wie man sie lösen kannNiemals war es leichter, Anwendungen mit grafischer Benutzeroberfläche von Windows nach Linux zu portieren. Da die in Kylix verwendete CLX-Programmbibliothek der VCL so ähnelt, ist die Arbeit in einigen Fällen innerhalb von Minuten erledigt. Die meisten Programme jedoch benötigen dann doch einiges an Arbeit. Dieser Beitrag behandelt die üblicherweise auftretenden Schwierigkeiten und zeigt, wie man damit umgeht. 1. DateinamenDas erste Problem, auf das Sie stoßen werden sind Linux Dateinamen. Hier ist es ein Unterschied, ob es MyUnit, myunit oder Myunit heißt, und Kylix erwartet, dass Sie den Bezeichner korrekt schreiben. Und zwar sowohl in der unit- als auch in der uses-Anweisung. Die Wahrscheinlicht steht gut, dass Sie Ihre Pascal-Dateien auf dem File-Server umbenennen müssen, wenn Sie nicht für immer und ewig mit sorglos getippten Datei- und Unit-Namen leben wollen. Für den NetWare 4-Server, der bei uns im Büro steht, ist das ein Problem. Er will es einfach nicht zulassen, dass eine Datei Test heißt und ändert den Namen immer wieder nach TEST, wenn der Zugriff über Windows erfolgt. Also haben wir ein kleines Kylix-Programm geschrieben, das alle Pascal-Dateien über den Samba-Server umbenennt. Das läuft nun jedes Mal, wenn Kylix einen falsch geschriebenen Dateinamen meldet. 2. Nochmal: DateinamenWenn Ihre Anwendung mit Dateinamen arbeitet (und welche tut das nicht?), müssen Sie sich auf die Suche machen: Nach allen als Pfad-Begrenzer verwendeten Backslashes, nach Groß- und Kleinschreibung in Dateinamen und Extensionen, sowie nach Laufwerks-Angaben. Es gibt ja schon lange Funktionen wie ExtractFileName in SysUtils, die nun auf beiden Plattformen korrekt arbeiten, aber nicht jeder benutzt sie. Weitere Hilfsfunktionen sind unter Windows allerdings erst ab Delphi 6 verfügbar, so z.B. IsPathDelimiter und IncludeTrailingPathDelimiter. Auf Linux-Systemen ist es außerdem wohl keine so gute Idee, zwei Dateinamen mit CompareText zu vergleichen. 3. UnitsDie Dateinamen der CLX-spezifischen Units beginnen mit Q. Q steht für Qt, die grafische Bibliothek von Troll Tech, auf der VisualCLX aufsetzt. Die CLX Formular-Klasse befindet sich in QForms, aus Controls wird QControls usw. Wir benutzen das Compiler-Symbol LINUX, um zwischen den Versionen umzuschalten: uses {$ifdef LINUX} QForms, QControls, QStdCtrls, {$else} Forms, Controls, StdCtrls, {$endif} System, SysUtils; Beachten Sie dabei bitte, dass mindestens noch eine
gemeinsame Unit hinter dem endif steht. Wenn Sie das Semikolon direkt hinter
QStdCtrls und StdCtrls schreiben, kommt die IDE von Zeit zu Zeit auf die
Idee, weitere Units innerhalb des ifdef einzufügen. uses {$ifdef LINUX} QForms, QControls, QStdCtrls, {$endif} {$ifdef MSWINDOWS} Forms, Controls, StdCtrls, {$endif} System, SysUtils; Leider ist das Symbol MSWINDOWS erst ab Delphi 6 definiert, so dass wir uns trotzdem für die erste Variante entschieden haben. 4. FormularJawohl, Sie können Delphi-Formulare auch unter Kylix verwenden. Es ist nur leider keine gute Idee, das auch zu tun. Wenn Sie ihre Formulare unter Delphi im Binärformat speichern (den Menüpunkt Text DFM im lokalen Menü des Formular-Designers ausschalten), können sie mit Kylix geöffnet werden. Allerdings werden Sie wahrscheinlich am Layout der Steuerelemente nicht viel Gefallen finden, dieses scheint unter Kylix etwas anders zu arbeiten. Also müssen Sie es abändern. Außerdem fehlen CLX-Steuerelementen einige der
Eigenschaften Ihrer Gegenstücke aus der VCL. Dann gibt es da unterschiedliche
Werte für Aufzählungstypen, andere Bezeichner für Schriftarten,
zusätzliche Eigenschaften. Insgesamt sind es nicht so viele Unterschiede,
aber die wenigen genügen. Speichern Sie ihre Kylix-Formulare lieber
in einer eigenen Datei ab und benutzten Sie die Standard-Endung xfm für
diese Files.
Auf diese Weise können Sie zwar vorhandene Formular unter Kylix weiterverwenden, müssen aber zwei Kopien der Formulardatei pflegen. Meiner Meinung nach ist das das beste, was Sie derzeit tun können. Unter Delphi 6 wird auch Ihre Windows-Anwendung eine CLX-Applikation sein können, was der Kompatibilität sicher nur gut tut. 5. Windows API FunktionenZu Windows API-Funktionen gibt es nur eines zu sagen: Lebwohl. Auch wenn die Kylix-IDE auf Wine aufsetzt, um unter Linux lauffähig zu sein, tun Kylix-Anwendungen das nicht. Deshalb müssen Sie alle solchen Funktione eliminieren:
6. VCL KomponentenDie gute Nachricht ist, dass es für die meisten üblicherweise benutzten Steuerelemente und Komponenten eine CLX Version gibt. So z.B. für TEdit, TStringGrid, TListView, TTimer. Aber die meisten sind nicht alle und Sie werden beispielsweise nach einem Ersatz für TRichEdit vergeblich suchen. Dieses Control basiert nämlich auf einer mit Windows ausgelieferten Microsoft-Bibliothek. Es gibt in Kylix zwar zwei neue Komponenten namens TTextViewer und TTextBrowser, diese beschränken sich jedoch auf das Anzeigen und können den Inhalt nicht editieren. Wenn ein von Ihnen benötigtes Steuerelement nicht verfügbar ist, können Sie nicht viel tun. Entweder gelingt es Ihnen, ohne es auszukommen, oder Sie warten, bis ein Komponentenhersteller die Marktlücke füllt oder Sie entwickeln es selbst. 7. Datenbank-KomponentenDa Borland die BDE unter Linux nicht unterstützt, müssen Sie TTable, TQuery, TDatabase und TSession in Ihrer Kylix-Palette verzichten. Falls Ihre Anwendung diese Komponenten benutzt, gibt es drei Alternativen, über die Sie nachdenken sollten:
Natürlich gibt es zum Thema Portierung noch einige Themen mehr, wie Online-Hilfe oder eingebetteter Assembler-Code. Ich glaube aber, dass Sie auf die hier abgehandelten Punkte als erstes stoßen. Damit gibt dieser Beitrag einen guten Vorgeschmack darauf, was Sie bei einer Portierung von Delphi-Applikation nach Kylix erwartet. Der Autor ist Diplom-Physiker und arbeitet seit über 15 Jahren als Coach, Software-Architekt und Verfasser von Fachartikeln. Er hat im Jahre 1998 die dataweb GmbH gegründet, welche Software-Tools für Datenbankentwickler erstellt und vertreibt. Das aktuelle Projekt von dataweb ist eine Multi-User-Datenbank-Komponente für Kylix. Der Autor freut sich über Anmerkung zu diesem Artikel an peterDOTpohmannADDdataweb.de. |