Entwicklungsumgebung für Free Pascal

Aus LinuxUser 08/2011

Entwicklungsumgebung für Free Pascal

© Roland Warmbier, 123rf.com

Oberflächlich

Mit Lazarus klicken Sie rasch eine Benutzeroberfläche zusammen, fügen etwas Programmlogik hinzu – fertig ist die eigene Anwendung. Das und eine weitgehende Kompatibilität zu Delphi verspricht die Free-Pascal-IDE allen Object-Pascal-Programmierern.

Den eigenen Object-Pascal-Programmen eine schicke Benutzeroberfläche zu verpassen ist eine langweilige Routineaufgabe, die zudem noch viel Zeit schluckt. Um das fortwährende stupide Ableiten von zahlreichen Klassen zu vereinfachen, entwickelte die Firma Borland bereits Mitte der 90er Jahre Delphi. In dieser Entwicklungsumgebung klickt der Autor seine Benutzeroberfläche schnell und komfortabel mit der Maus zusammen. Delphi kostet jedoch einen Haufen Geld und beschränkt sich zudem auf Windows. Eine mehr als ebenbürtige Alternative bietet die komplett freie Entwicklungsumgebung Lazarus: Sie setzt auf dem beliebten Pascal-Compiler Free Pascal auf, besitzt einen großen Funktionsumfang, liegt den meisten großen Distributionen bei und ist sogar in vielen Bereichen kompatibel zum guten alte Delphi. Obendrein läuft sie auch noch unter Windows und Mac OS X.

Zeichenbrettchen

Nach dem ersten Start überschüttet Lazarus den Programmierer mit zahlreichen Fenstern, in denen sich Delphi-Programmierer schnell heimisch fühlen dürften (Abbildung 1). Aus einer Palette am oberen Bildschirmrand wählen Sie zunächst ein passendes GUI-Element und platzieren es dann auf einem Formular – so nennt Lazarus alle (Dialog-)Fenster des entstehenden Programms. Einmal abgelegt, zupfen Sie die Elemente über Anfasser wie in einem Malprogramm auf die passende Größe und schiebt sie an ihre korrekte Stelle. Feineinstellungen und Eigenschaften, wie etwa die Beschriftung einer Schaltfläche, modifizieren Sie bequem im Fenster des sogenannten Objektinspektors.

Abbildung 1: Lazarus begrüßt den Entwickler mit zahlreichen Fenstern. Das leere <code srcset=

Formular in der Mitte stellt das Hauptfenster der späteren Anwendung.” width=”300″ height=”211″ /> Abbildung 1: Lazarus begrüßt den Entwickler mit zahlreichen Fenstern. Das leere Formular in der Mitte stellt das Hauptfenster der späteren Anwendung.

Im Hintergrund generiert Lazarus automatisch den passenden Quellcode, den Sie in einem eigenen Editor-Fenster nur noch um die eigentliche Programmlogik ergänzen müssen. Und selbst dabei hilft in einigen Fällen der Objektinspektor: Er listet nicht nur alle möglichen Ereignisse auf, die das gerade markierte GUI-Element versteht, sondern verknüpft diese mit wenigen Mausklicks mit bestehenden Methoden beziehungsweise legt eine passende, leere an.

Pflicht und Kür

Darüber hinaus bietet Lazarus sämtliche Funktionen einer herkömmlichen Entwicklungsumgebung. So jongliert die Projektverwaltung auch komplexe Projekte. Den Überblick über alle beteiligten Dateien und Packages gewährt ein eigenes Projektinspektor-Fenster. Um eine Anwendung zu übersetzen, genügt es in der Regel schon, die grüne Wiedergabeschaltfläche zu drücken. Falls notwendig dürfen Sie jedem Projekt individuelle Compiler-Einstellungen mitgeben. Fehler listet ein eigenes Fenster auf, ein Mausklick auf ein Problem springt direkt zur fraglichen Codestelle (Abbildung 2). Der eingebaute Debugger kümmert sich um Abstürze und unterbricht das Programm an zuvor im Editorfenster per Mausklick festgelegten Haltepunkten. Zusätzlich dürfen Sie das eigene Programm schrittweise ausführen und die Inhalte von Variablen einsehen.

Abbildung 2: Dank integriertem Debugger spürten Sie fehlerhafte Codestellen, wie hier einen Tippfehler, rasch auf.

Abbildung 2: Dank integriertem Debugger spürten Sie fehlerhafte Codestellen, wie hier einen Tippfehler, rasch auf.

Der Editor bietet den von anderen professionellen Entwicklungsumgebungen gewohnten Leistungsumfang. So färbt er den Quellcode ein (“Syntax Highlighting”) und klappt Codeblöcke beispielsweise in Form von Methoden vorübergehend aus beziehungsweise wieder ein (“Code Folding”). Bei der Programmierung schlägt die Autovervollständigung (“Code Completion”) mögliche Methoden- und Klassennamen vor, hilft beim Ausfüllen von Parametern und ergänzt beispielsweise automatisch das end nach einem begin (Abbildung 3).

Abbildung 3: Schon während der Eingabe macht der Editor Vorschläge.

Abbildung 3: Schon während der Eingabe macht der Editor Vorschläge.

Per Tastenkombination kommentieren Sie schnell alle gerade markierten Zeilen oder rücken sie einen Ebene tiefer ein. Häufige oder wiederkehrende Codeblöcke können Sie in als eine Art Textbaustein in Form einer Code-Schablone speichern. Es genügt dann die Eingabe eines Kürzels gefolgt von [Strg]+[J], damit Lazarus sie gegen die komplette Vorlage ersetzt. Die Entwicklungsumgebung bringt bereits Code-Schablonen für häufige Konstrukte mit, wie etwa for-Schleifen oder begin/end-Blöcke.

In einer Klassendeklaration genügt es, Methoden und Eigenschaften vorzugeben. Eine Tastenkombination erzeugt dann automatisch leere Methodenrümpfe sowie passende Getter- und Setter-Methoden. Tippfehler spürt die Schnelle Syntaxprüfung schon vor der Übersetzung auf, weitere Assistenten erraten offene Quelltexteblöcke beziehungsweise IFDEF/ENDIFs.

El Kapitano

Für die Navigation im Quellcode hält Lazarus viele nützliche kleine Hilfen bereit. Zunächst können Sie den Code flexibel mit regulären Ausdrücken durchsuchen und ersetzen. Neben dieser Volltextsuche existiert noch ein Codebrowser, der explizit nur die Namen von Packages, Units und Bezeichnern nach einem Begriff abklappert.

Längere Programme behalten Sie mit dem CodeExplorer-Fenster im Blick. Es führt alle verwendeten Typen, Variablen, Interfaces, Implementierungen und Units übersichtlich in einer Gliederung auf und springt per Mausklick zur entsprechenden Codestelle. Der im CodeExplorer enthaltene Code Observer mahnt auf Wunsch schlechten Programmierstil an, wie etwa falsche Einrückungen oder zu lange und leere Prozeduren. Weitere Fenster zeigen unter anderem die Abhängigkeiten zwischen den Units sowie die bislang angelegten Formulare. Ein eigener FPDoc-Editor hilft bei der Dokumentation des Quellcodes nach FPDoc-Standard.

Lazarus hilft beim Refactoring, indem es Bezeichner im Projekt umbenennt, markierten Quellcode in eine neue Prozedur extrahiert oder Zuweisungen umdreht (aus A := B; würde B := A;). Darüber hinaus kann der Editor automatisch noch nicht implementierte, abstrakte Methoden aufspüren und eine passende, leere Methode erzeugen. Lediglich eine Anbindung an ein Versionierungssystem sucht man vergebens.

Moderne Klassik

Ziehen Sie innerhalb von Lazarus eine Schaltfläche auf ein Formular, erstellt die Entwicklungsumgebung im Hintergrund automatisch ein neues Objekt vom Typ TButton. Die zugehörige Klasse stammt aus der hauseigenen Lazarus Component Library, kurz LCL. Dahinter verbirgt sich eine ganz normale, auch ohne Lazarus nutzbare Klassenbibliothek, deren Units und Klassen die Benutzeroberfläche eines Object-Pascal-Programms erzeugen.

Die LCL zeichnet die einzelnen GUI-Elemente jedoch nicht selbst auf den Bildschirm, sondern greift dazu auf eine klassische Systembibliothek zurück. Auf welche genau, dürfen Sie als Programmierer zur Übersetzungszeit selbst bestimmen. Linux-Nutzer haben die Wahl zwischen Qt, GTK+ oder GTK2, eine eine Unterstützung für das plattformunabhängige Free-Pascal-GUI-Toolkit [2] fpGUI ist derzeit in Arbeit.

Darüber hinaus gibt es die LCL auch für andere Betriebssysteme. Auf Windows und Windows CE nutzt sie direkt die entsprechenden Systemfunktionen, unter Mac OS X dürfen Sie sich derzeit noch zwischen Cocoa und Carbon entscheiden. Abbildung 4 veranschaulicht noch einmal den Aufbau der LCL und das Zusammenspiel der einzelnen Komponenten.

Abbildung 4: Die LCL dient als Schnittstelle zwischen Object-Pascal-Programm und der entsprechenden GUI-Bibliothek der unterstützten Betriebssysteme.

Abbildung 4: Die LCL dient als Schnittstelle zwischen Object-Pascal-Programm und der entsprechenden GUI-Bibliothek der unterstützten Betriebssysteme.

Überträger

Mit Hilfe der LCL lassen sich folglich sehr einfach plattformübergreifende Anwendungen programmieren, den einmal erstellten Quellcode müssen Sie lediglich auf dem Zielbetriebssystem neu kompilieren (“Write once, compile everywhere”). Wie gut das in der Praxis funktioniert, beweist Lazarus selbst: Die Entwicklungsumgebung wurde vollständig mit der LCL programmiert. Über einen eigenen Menüpunkt lässt sie sich sogar “mal eben” im Betrieb für eine andere GUI-Bibliothek übersetzen.

Allerdings gibt es noch zwei kleine Stolperfallen: Zum einen befinden sich einige Schnittstellen, wie etwa die zu Qt, offiziell noch in der Beta-Phase. Sie laufen jedoch schon recht stabil und werden in der Praxis von Programmierern fleißig genutzt. Zum anderen versucht die LCL den GUI-Richtlinien des jeweiligen Betriebssystems zu folgen. Das führt wiederum dazu, dass sich einige Komponenten auf jeder Plattform etwas anders verhalten. Beispielsweise lassen sich unter Windows bestimmte Dialogfenster nicht mit der Maus vergrößern, unter X11 hingegen schon. Auch Tastenkürzel fangen die Betriebssysteme unterschiedlich ab. Das Lazarus-Wiki [3] hält deshalb gleich mehrere Seiten mit Tipps zur plattformübergreifenden Programmierung bereit.

Die LCL kann übrigens noch mehr, als lediglich bunte Fenster auf den Bildschirm zu bringen. So bietet sie unter anderem Klassen für den einfachen und schnellen Zugriff auf Datenbanken, darunter PostgreSQL, dBase und MySQL. Innerhalb von Lazarus können Sie die Komponenten für die Datenbankanbindung wie andere GUI-Elemente auf dem Formular ablegen. Dort erscheinen sie als Symbole, in der fertigen Anwendung verrichten sie ihre Arbeit unsichtbar im Hintergrund (Abbildung 5).

Abbildung 5: Lazarus bringt zahlreiche Beispielprogramme mit, wie diese Adressverwaltung. Sie zeigt den Umgang mit der Datenbankprogrammierung. Bei den Symbolen in der weißen Fläche des Hauptfensters handelt es sich um die Objekte für die Datenbankanbindung.

Abbildung 5: Lazarus bringt zahlreiche Beispielprogramme mit, wie diese Adressverwaltung. Sie zeigt den Umgang mit der Datenbankprogrammierung. Bei den Symbolen in der weißen Fläche des Hauptfensters handelt es sich um die Objekte für die Datenbankanbindung.

Das doppelte Orakel

Als Vorbild für die LCL dient die Visual Component Library (VCL) aus Delphi. Der weiter oben erwähnte TButton dürfte deshalb alten Delphi-Hasen absichtlich bekannt vorkommen. Dennoch arbeitet die LCL nicht vollständig zur VCL kompatibel. Einige Unterschiede sind der Plattformunabhängigkeit geschuldet und somit gewollt, während andere Komponenten noch durch Abwesenheit glänzen.

Das betrifft insbesondere Klassen für Multimedia-Anwendungen (wie TAnimate), auf Windows zugeschnittene Komponenten (wie TMediaPlayer) sowie den Netzwerk-Zugriff (Stichwort ADO). Delphi- und Kylix-Programme lassen sich folglich nicht eins zu eins in Lazarus übernehmen, sondern verlangen eine Anpassung. Lazarus hilft zwar bei der Konvertierung mit eigenen Assistenten, um eine Nachbearbeitung kommen Sie jedoch meist nicht herum. Im Lazarus Wiki finden Umsteiger neben einer Liste mit den Unterschieden auch gleich mehrere Seiten mit Tipps und Anleitungen.

Kostenloser Kommerz

Lazarus linkt die LCL in der passenden Geschmacksrichtung statisch an die Object-Pascal-Anwendung. Um dennoch die Entwicklung von kommerziellen Programmen zu ermöglichen, steht die Klassenbibliothek unter einer modifizierten LGPL-Lizenz. Das gilt jedoch dummerweise nicht für alle enthaltenen Units. Bevor Sie eine Komponente in einer kommerziellen Anwendung nutzen, sollten Sie daher einen Blick in die Lizenz werfen, die sich wiederum im Quellcode der jeweiligen Komponente versteckt. Lazarus selbst steht übrigens unter der GPL.

Fazit

Haben Sie sich erst einmal mit der etwas überladen wirkenden Oberfläche angefreundet, erstellten Sie mit Lazarus einen plattformübergreifenden Taschenrechner in wenigen Minuten. In dieser Zeit leiten Nutzer einer herkömmlichen Entwicklungsumgebung gerade mal die Klassen für die Schaltflächen ab. Beim Einstieg hilft das gut bestückte und teilweise eingedeutschte Wiki [3]. Anfänger sollten dort vor allem einen Blick in die Tutorials werfen.

Der Umstieg von Delphi gelingt relativ einfach, wenngleich Sie um eine manuelle Nachbearbeitung nicht herumkommen. Als Lohn winkt jedoch eine Object-Pascal-Anwendung, die sich für alle großen Betriebssysteme übersetzen lässt.

Auch nach über zehn Jahren läuft die Entwicklung an Lazarus und der LCL auf vollen Touren. Während andere Programme in dieser Zeit schon mehrere Versionsnummern verschlissen hätten, muss die Entwicklungsumgebung immer noch mit einer vorausgehenden Null auskommen – zum Redaktionsschluss aktuell war die Version 0.9.30. Davon sollten Sie sich aber nicht abschrecken lassen: Lazarus läuft schon jetzt stabil und stellt zusammen mit Free Pascal einen ernstzunehmenden Konkurrenten für das altehrwürdige Delphi. 

Zeitreise

Ausgehend von Algol 60 entwickelte Niklaus Wirth Anfang der 70er Jahre die strukturierte und vorwiegend für Ausbildungszwecke gedachte Programmiersprache Pascal. Vor allem in den 80er Jahren fand sie – nicht zuletzt durch die günstige Entwicklungsumgebung Turbo Pascal von Borland – eine weite Verbreitung. Durch den Erfolg angestachelt, erweiterte Borland sowohl den Funktionsumfang des Pakets als auch die Sprache selbst. So stülpte man ihr Ende der 80er Jahre objektorientierte Konzepte über und nannte das Ergebnis Object Pascal.

Mitte der 90er Jahre führte Borland eine von Grund auf neu geschriebene Entwicklungsumgebung namens Delphi ein. Mit ihr konnte man die Benutzeroberflächen von Object-Pascal-Programmen komfortabel und schnell wie auf einem Zeichenbrett entwerfen. Als grundlegende GUI-Bibliothek diente dabei die Visual Component Library, kurz VCL. Sie war genau wie Delphi vollständig auf Windows zugeschnitten. Den wachsenden Linux-Markt wollte Borland 2001 mit Kylix erobern. Dahinter verbarg sich eine per Wine emulierte Delphi-Oberfläche, die zusammen mit der stark an VCL angelehnten GUI-Bibliothek CLX (für “Component Library for Cross Platform Development”) native grafische Linux-Programme produzieren konnte. Heute wird Delphi von Embarcadero Technologies weiterentwickelt und vertrieben, Kylix entfiel mangels Erfolg wieder aus dem Programm.

Unzufrieden mit dem Vorgehen von Borland begann der Student Paul Klämpfl bereits Anfang der 90er Jahre die Arbeit an einem freien Compiler. Vor allem die Kompatibilität zu Turbo Pascal und Delphi sowie die einfache Portierbarkeit machten Free Pascal schnell zu einem der beliebtesten, freien Pascal-Compiler. Allein eine Delphi-ähnliche, visuelle Entwicklungsumgebung fehlte. Abhilfe wollte zunächst das Projekt Megido schaffen, das jedoch 1999 unterging. Aus den Trümmern entstand das Projekt Lazarus – daher auch der biblische Name.

LinuxUser 08/2011 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben