Die Turbos sind da!
Turbo Pascal - vermutlich jeder, der sich mit Programmierung beschäftigt, wird diesen Begriff schon einmal gehört haben. Mit den Produkten Turbo Delphi, Turbo Delphi .NET, Turbo C++ und Turbo C# lässt Borland diesen Begriff wieder aufleben. Wohl auch durch Microsofts Express-Editionen des Visual Studio sieht sich Borland gezwungen, nachzuziehen. Explorer heißen die einfachen Editionen der Turbo-Produkte, die kostenfrei heruntergeladen und genutzt werden können - auch für kommerzielle Anwendungen.
Turbo Delphi Explorer basiert - wie alle anderen Turbo-Produkte - auf dem Borland Developer Studio (BDS) 2006. Eine große Einschränkung gibt es: Keine zusätzlichen Komponenten können installiert werden. Das Einbinden von Bibliotheken und das Ausführen der Komponenten zur Laufzeit ist aber problemlos möglich. Alle Funktionen von Turbo Delphi sind auch im BDS2006 verfügbar, viele davon auch schon in den Delphi 2005-Professional- und Enterprise-Versionen, von daher gibt es also wenig neues.
Der vorliegende Artikel richtet sich vor allem an die Entwickler, die zuvor nur mit einer Personal-Version von Delphi gearbeitet haben und diese Funktionen noch nicht kennen.
Verbesserter Formulardesigner
Der Formulardesigner verfügt über die sogenannten Laserlines. Mit diesen ist es möglich, visuelle Komponenten leichter und genauer zu platzieren.

Wie bisher ist das Raster auf den Formularen auf 8 Pixel eingestellt. Das hatte bei bisherigen Versionen immer zur Folge, dass Edit-Felder nicht genau neben Labels gepasst haben, ein Element musste immer über die Top-Eigenschaft verschoben werden. Mit den Laserlines rasten die Elemente automatisch ein, wenn die Schrifthöhe einer anderen Komponente übereinstimmt, wie im Bild bei Label4 und Edit4.
Quellcode-Editor
Der Codeeditor wurde ebenfalls stark verbessert. Farbmarkierungen am linken Rand zeigen an, welche Teiles des Codes bereits gespeichert wurden (grün) und welche seit dem letzten Speichervorgang neu hinzugefügt wurden (gelb).

Um die Übersicht über den Quellcode zu behalten, wurde die Funktion CodeFolding in den Editor eingebaut. Mit dieser Funktion können lange Prozeduren und Funktionen einfach weggeblendet werden, bis wieder auf sie zugegriffen werden muss. Dass ein Codeteil ausgeblendet wurde, wird durch ein Feld mit drei Punkten angezeigt.

Von Textverarbeitungsprogrammen abgeschaut hat sich Borland die Fehleranzeige. Ist der Quellcode syntaktisch nicht korrekt, so wird das Element, bei dem ein Fehler vermutet wird, mit einer roten Wellenlinie unterstrichen. Die meisten Flüchtigkeitsfehler können so schon während des Editierens entdeckt und ausgemerzt werden.

Der Fehler wird zusätzlich noch in der Strukturansicht des Codes mit angezeigt, im Beispiel ist es der Bezeichner I, der noch nicht deklariert wurde.
Refactoring
Unter Refactoring versteht man das Neugestalten und Vereinfachen des Codes, um diesen leichter lesbar zu machen und ihn einfacher verwalten zu können. Die Funktionalität der Software soll durch Refactoring nicht geändert werden.
Die erste Funktion, die schon zum Refactoring zählt, setzt auf den oben genannten Fehler (nicht deklarierter Bezeichner) auf. Durch einfaches Markieren der Variable I und Drücken der Tastenkombination Strg+Shift+V öffnet sich der Dialog Variable deklarieren.

Aus dem Code hat Delphi schon den Typ Integer ermittelt und schlägt diesen vor. Durch einfaches Bestätigen des Dialogs wird der Prozedur die lokale Variable hinzugefügt.

Eine weitere Funktion ist das Umbenennen einer Variable oder Komponente. Bisher lief ein solcher Wunsch auf das Suchen/Ersetzen im gesamten Code heraus - inklusive der Gefahr, durch allzu hektisches Verhalten bei der Ersetzungsfunktion den Code unbrauchbar zu machen.
Viel einfacher ist es mit der Refactoring-Funktion Umbenennen, die nach dem Markieren des Elements durch Strg+Shift+E aufgerufen wird.

Es erscheint ein Dialog, in den der neue Name eingeben wird. In unserem Fall wird die Komponente Edit1 in edSource umbenannt. Nach dem Klick auf OK wird der Code analysiert und eine Übersicht der vorzunehmenden Änderungen angezeigt.

Die Änderungen werden angezeigt: Im Kopf muss die Deklaration geändert werden, drei Codezeilen werden angepasst und zusätzlich muss die Komponentenbezeichnung im Formular umbenannt werden. Durch die Tastenkombination Strg+R wird das Refactoring gestartet und die Komponente umbenannt.

Eine weitere interessante Funktion ist Methode extrahieren. Während des Programmierens entstehen oftmals doppelte Codeteile und unübersichtliche Abschnitte, die man gerne in einer eigenen Prozedur oder Funktion stehen hätte. Die Refactoring-Funktion Methode extrahieren tut genau das.
Nehmen wir an, die Codezeile mit der Zuweisung von edSource.Text zu Edit2.Text soll in eine eigene Prozedur wandern. Hierzu wird einfach nur der entsprechende Code markiert und mit Strg+Shift+M der Dialog zum Extrahieren des Codes geöffnet.

Nach dem Schließen des Dialogs mit OK wird die neue Prozedur erstellt und in den Code eingefügt. Auch um die Kopfdeklaration im Private-Abschnitt kümmert sich Delphi hierbei automatisch.

Live-Templates
Schon seit Version 3 sind sogenannte Code-Vorlagen in Delphi vorhanden, die durch Drücken von Strg+J aktiviert werden können. Damit können beispielsweise If-Then-Else-Konstrukte oder Prozedur- und Funktionsdeklarationen schnell erstellt werden. Borland hat diese im BDS2006 aufgebohrt und nennt sie nun Live-Templates. Das besondere daran ist, dass diese in gewisser Weise interaktiv sind, wodurch deren Nutzen gewaltig steigt.
Beispielhaft deklarieren wir ein String-Array mit zwei Einträgen und initialisieren es mit den Strings ‘Ja’ und ‘Nein’.
Nach Eingabe des Namens myArray geben wir array ein und drücken Strg+J. Es öffnet sich ein Fenster, in dem die Vorlagen gewählt werden können.
Durch die Eingabe von arrayc wäre dieser Dialog übrigens gar nicht erst erschienen und es wäre bereits der nächste Schritt aktiv. Durch Drücken von Tab wandert der Cursor ins erste Feld und der Hilfetext “Untergrenze des Array” erscheint.

Da wir die Vorgabe übernehmen wollen, drücken wir erneut Tab. Der Cursor springt nach rechts und wir können die Obergrenze des Array eingeben.

Wir tippen 1, da das bei 0 beginnende Array zwei Einträge haben soll. Nach einem weiteren Druck auf Tab kann der Elementtyp festgelegt werden, der im Array Verwendung finden soll.

Wir geben String ein, da wir zwei Stringvariablen verwenden wollen. Nach der Eingabe drücken wir erneut Tab, um das Array initialisieren zu können.

Nach Eingabe der beiden Initalisierungswerte und einem erneuten Druck auf Tab ist die Eingabe abgeschlossen. Gerade durch die automatische Navigation sparen die Live-Templates viel Zeit und sind wesentlich intuitiver nutzbar als die alten Code-Vorlagen.
Versionsverwaltung
Eine weitere nützliche Funktion ist die Versionsverwaltung, die beispielsweise in Delphi 2005 Personal nicht integriert war. Mit ihr ist es möglich, ältere Revisionen des Codes anzusehen und die alten Codeteile mit der aktuellen Version zu vergleichen. Im Gegensatz zu CVS oder SVN ist diese Funktion nur lokal verfügbar, kommt aber dafür ohne spezielle Softwareinstallation aus.
Das Bild zeigt beispielhaft den Codevergleich zwischen der letzten gespeicherten Version des Codes und der aktuellen Version im Editorpuffer an.

Download
Die Explorer-Versionen können auf verschiedenen Spiegelseiten und via BitTorrent heruntergeladen werden. Die Downloadlinks finden Sie auf der TurboExplorer-Webseite von Borland. Die Downloadgrößen betragen ca. 400 MB je Version.
2 Kommentare »
RSS feed for comments on this post · TrackBack URI
Tony sagt:
25. Februar 2007 @ 10:44
Sehr schöner Artikel, v.A. die Beschreibung des Refactoring ist gut geschrieben! Echt Klasse!
Und was die Turbos ansich angeht, ist es ein bisschen Schade, dass man keine Komponenten hinzufügen kann… am Anfang gab es da noch einen Trick, der ja aber mittlerweile gepatcht ist
Daniel Schuhmann sagt:
26. Februar 2007 @ 11:50
Sicherlich ist es schade, was die Komponenten angeht. Aber dafür bekommt man die Edition kostenlos und darf sogar kommerzielle Programme erstellen.
Die meisten Komponenten lassen sich ja dennoch nutzen, wenn diese im Code initialisiert werden. Nur das bequeme Klicken mit der Maus entfällt halt…