Inhalt
Delphi XE Starter Edition - Review
Sitemap
Review der Delphi XE Starter Edition
von Christian Stelzmann

Kürzlich veröffentlichte Embarcadero eine neue Version von Delphi, die Delphi XE Starter Edition, welche darauf ausgelegt ist, wieder mehr Hobby-Programmierer für Delphi zu begeistern.

Da die letzte Version, die ich intensiv genutzt habe, Delphi 2005 war und ich danach nur mal einen kurzen Blick in die Turbo Edition geworfen habe, wird dies hier kein Review in dem ich Delphi XE Starter Edition mit irgendwelchen Vorgängern vergleichen kann. Ich werde das Ding einfach mal starten und sehen, was mir gefällt und was nicht. :-)



Installation

Zur Installation möchte ich nur wenige Worte verlieren. Der Download von Embarcadero führt zu einem ca. 30 MB großen Installer, der während der Installation die restlichen Daten herunterlädt und in ein vorher vom Benutzer ausgewähltes Verzeichnis schreibt. Vorher werden noch Dinge wie JScript nachinstalliert.

Bei mir hat dieses Verzeichnis jetzt 116 MB, ich habe allerdings auch angewählt, die deutsche und die englische Version zu installieren. Ja, ihr lest richtig: Man kann mehrere Sprachversionen installieren! Zur Auswahl stehen Englisch, Französisch, Deutsch und Japanisch.

Anschließend kann man neben der IDE selber noch auswählen: Interbase Express, Ribbon-Steuerelemente (mit dem obligatorischen Lizenzhinweis), BDE, Datenbankoberfläche, Bilddateien und Beispieldaten.

Die Installation selber verläuft absolut unauffällig, was bei einer Installation was Gutes ist. Die IDE und das Hilfesystem werden übrigens in zwei Schritten installiert. Das Hilfesystem "vergessen" kann man aber eigentlich nicht, am Ende der IDE-Installation kommt ein Hinweis, dieses noch nachzuinstallieren. Für das Hilfesystem wird der Document Explorer (Version 9) von Microsoft nachinstalliert.

Am Ende der Installation kann man auch die Option setzen, dass automatisch nach Upates gesucht werden soll. Das sollte man sich gut überlegen, denn das funktioniert unter Windows Vista und Windows 7 nur korrekt, wenn man die IDE danach mit Administrator-Rechten startet. Das finde ich ein bisschen anachronistisch, muss ich sagen, andere Programme fordern die Admin-Rechte erst an, wenn es auch ein Update zu installieren gibt.

Zwischenfazit: Die Installation läuft so, wie sie laufen soll. Problemlos und (abhängig von der Downloadgeschwindigkeit) zügig.



Der IDE-Start

[url=files.entwickler-eck.../ide_startseite.png]user defined image[/url]
Delphi XE Starter Edition startet zügig, fast so schnell wie Visual Studio 2010, um mal einen Vergleich zu nennen. Nach dem Start erwartet einen die Willkommensseite, die einem die Optionen zur Erstellung eines neuen Projektes, zum Öffnen eines Projektes und eine Liste mit den letzten Projekten zeigt.

Weiterhin kann man News von ausgewählten Feeds "zum Thema" abrufen und direkt auf der Willkommensseite anzeigen, unter anderem auch die News der drei deutschen Delphi-Communities. Zugriff erhält man auch diverse Resourcen, unter anderem die Websites verschiedener Partner-Firmen, aber auch z.B. zum YAPP-Highlighter, der einem zu einem Quelltext den passenden HTML-Quellcode ausspuckt. Ich mag solche Details :-)

Ein weiteres Detail wiederrum ist etwas kurios: Kann es sein, dass Embarcadero in der Symbolleiste zwei Buttons vergessen hat (siehe Screenshot)? Buttons Nummer zwei und drei sind mir zumindest bisher nicht vorgestellt worden ;-)

Zwischenfazit: Keine Überraschungen an dieser Stelle. Obwohl ich mir schon Sorgen mache, ob diese zwei Buttons irgendwo einsam und alleine herumirren.



Das erste Projekt

[url=files.entwickler-eck...w/objektgalerie.png]user defined image[/url]
Ein Klick auf den "Neues Projekt ..."-Link auf der Willkommensseite präsentiert die Objektgalerie, in dem alles zur Auswahl steht, was man mit dieser IDE erstellen kann. Ich wähle "Delphi-Projekte", weil ich eine VCL-Anwendung erstellen will - und verfalle direkt in nostalgische Gefühle, denn das Icon für die VCL-Formularanwendung erscheit mir aus einer anderen Zeit, mit seinen geschätzten sechs Farben :D Auf der anderen Seite: Es gibt wichtigeres in einer IDE und so lange alles so läuft, wie es soll, dürfen die Icons von mir aus auch schwarz/weiß sein.

Nach Klick auf okay bin ich positiv überrascht: Das Projekt ist da, sofort. Man kann noch nicht mal mit den Augen zwinkern. Um wal wieder den Vergleich mit Visual Studio zu bemühen: Hier dauert es im Vergleich "ewig", bis eine simple Windows-Forms-Anwendung erstellt ist, und sich die Toolbox bequemt, mal zu erscheinen. Lob an Embarcadero an dieser Stelle!



Rund um die GUI

[url=files.entwickler-eck.../leeres_projekt.png]user defined image[/url]
Nach Erstellen des Projektes präsentiert die IDE in der Mitte das Formular, links oben eine Struktur der visuellen Komponenten (aktuell nur die Form drin), darunter der Objektinspektor mit den Eigenschaften des ausgewählten Objektes. Rechts oben gibt es die Projektverwaltung, welche die Projektgruppe, das Projekt und die darin enthaltenen Dateien auflistet. Unter der Projektverwaltung findet man die Tool-Palette mit allen Komponenten, die man auf die Form werfen kann.

Die Tool-Palette
Apropos "auf die Form werfen" - das mache ich jetzt einfach mal. Schon bei Delphi 2005 mochte ich es, dazu die Filterfunktion der Tool-Palette zu benutzen. Einfach "Ed" eingeben und die Palette ist soweit gefiltert, dass TEdit ausgewählt ist. Einmal Eingabetaste drücken und ein TEdit ist auf der Form. Deshalb konnte ich nie verstehen, warum viele Entwickler die alte Komponentenpalette wieder haben wollten. Aber wie man in Düsseldorf sagt: Jede' Jeck is' anders ;-)

Genau die Leute wird es aber freuen, dass man zusätzlich zur Tool-Palette in Boxform auch noch eine Komponentensymbolleiste einblenden kann, welche der alten Komponentenpalette entspricht - und auch filterbar ist, wenn das auch auf Grund der Anzeige in Tabs meiner Meinung nach nicht so praktisch wie bei der Listenform der Box ist.

In der Tool-Palette findet sich eine große Auswahl an Komponenten, die man bereits aus vorherigen Delphi-Versionen kennt und die eigentlich das gesamte Spektrum, was man von Windows so kennt, abdecken. Außerdem dabei sind die Indy-Komponenten und Komponenten für die Ribbon-UI, da sollte man sich vorher aber mit der Lizenz beschäftigen (und sie auch explizit bestätigen), die Microsoft für die Verwendung vorsieht.

Der Designer
Für die Positionierung der Komponenten auf der Form gibt es Hilfslinien, an welche die Komponenten andocken, um sie so untereinander aber auch in Bezug auf den Rand der Form korrekt auszurichten.

Auch weiterhin werden auch nicht-visuelle Komponenten (wie ein Popup-Menü, so lange es nicht aufgepoppt ist ;-)) auf der Form angezeigt. Das fand ich noch nie sehr geglückt, die sind irgendwie immer im weg und man ist fast versucht, die Form größer zu machen, nur um Platz für diese blöden Kästchen zu haben ;-)

Nett übrigens: Wenn man im Designer Elemente markiert und dann per Bearbeiten->Kopieren in die Zwischenablage befördert, wird auch gleich eine Bitmap-Version der Auswahl dort abgelegt, die man z.B. in Word einfügen kann. Da wird scih so mancher Buch- oder Tutorial-Schreiber drüber freuen.

Der Objektinspektor
Nachdem ich mir Edit-Feld, Listbox, Button und Popup-Menü auf die Form geworfen habe, ist es Zeit, sich mal den Objektinspektor anzugucken. Hier gibt es erst einmal nicht so viel Neues. Auffällig ist hier für mich erst einmal die Darstellung von boolschen Eigenschaften: Sie werden als Checkbox dargestellt, hinter denen "True" oder "False" steht und zur Combobox werden, wenn man nicht die Checkbox, sondern den Wert anklickt. Da ist wirklich für jeden was dabei und jeder kann den Wahrheitswert so ändern, wie er's am liebsten mag. :D

Im unteren Bereich des Objektinspektor gibt es einen Bereich, von dem ich gehofft hatte, er würde vielleicht einen kurzen Hinweistext zur gewählten Eigenschaft anzeigen. Aber mehr als nochmal der Eigenschaftenname steht da leider nicht. Irgendwie Platzverschwendung, da könnte man sicher mehr draus machen.

Für jemanden, der lange nicht mehr mit Delphi gearbeitet hat, ist es auch ungewohnt, dass bei Enumerations im Objektinspektor immer noch die Präfixe wie "dm" bei "dmActiveForm" angezeigt werden. Meiner Meinung nach macht es das schwieriger, mit einem Blick zu erfassen, welcher Wert eingestellt ist, wenn man die ersten zwei Buchstaben ignorieren muss. Dass man die Sprache in dieser Hinsicht nicht "mal eben" ändert, ist klar, aber die Darstellung im Objektinspektor könnte man durchaus verbessern.

Jenseits der Standardkomponenten
Da Delphi lange Zeit Probleme damit hatte, mit der Entwicklung Schritt zu halten, hat mich besonders interessiert, wie die neuen GUI-Elemente, welche in Windows Vista und Windows 7 dazu gekommen sind, in Delphi umgesetzt wurden. Aus diesem Grunde möchte ich hier in einem extra Abschnitt darüber schreiben.

Um Glass-Effekte in der eigenen Form zu verwenden, reicht es, eine Checkbox anzuklicken (oder die Combobox zu benutzen ;-)). Dann kann man entweder einen Rahmen aus Glas für die Form definieren, oder aber über eine anderen Checkbox die ganze Form zu einem "Sheet of Glass" machen. Bei letzterem muss man das DoubleBuffering der Form einschalten, wenn die Darstellung nicht vermurkst aussehen soll. Das könnte, finde ich, auch automatisch geschehen, tut es aber leider nicht. Glücklicherweise habe ich mich an irgendeine Session von irgendwelchen Delphi-Tagen erinnert, wo das mal angesprochen wurde ;) Trotzdem: Das ist ziemlich gut gelöst, viel einfacher geht es nicht.

Etwas durchwachsen erscheint mir, wie die Nutzung der neuen Datei-Dialoge (z.B. "Datei öffnen") gelöst wurde: Es gibt getrennt einen alten und einen neuen Dialog. Wenn ich das richtig sehe, muss ich als Programmierer beide auf meine Form packen und zur Laufzeit selber ausknobeln, welchen ich jetzt gerade benutzen darf. Bei meinem Test ergab der Aufruf des neuen Dialogs unter XP(-Kompatiblitätsmodus) nur die Meldung, dass der nicht unterstützt wird. Es ist zwar schön, dass beide Dialoge in Delphi verfügbar sind, aber eine automatische Erkennung des richtigen Dialogstils wäre dann noch das Sahnehäubchen gewesen.

[url=files.entwickler-eck...xe_review/essen.png]user defined image[/url]
Keine Wünsche offen lässt die Einbindung des Task-Dialogs. Mit einer großen Menge an Optionen zur Darstellung kann man hier wirklich alles Nutzen, was diese Art von Dialog zu bieten hat. Neben dem, was im Screenshot zu sehen ist, kann man auch noch zusätzliche Radiobuttons einfügen, weitere Texte definieren, usw. Das gefällt!

Die Buttons, wie sie in dem Dialog zu sehen sind (also die mit dem grünen Pfeil), kann man auch ganz einfach in der eigenen Form nutzen. Der Standard-TButton hat eine Style-Eigenschaft, ändert man diese von "bsPushButton" auf "bsCommandLink" , ist man auch schon am Ziel. Übirgens: Das "Schild"-Icon für die Anforderung erhöhter Benutzerrechte bekommt man beim normalen Button genauso leicht hin wie im TaskDialog: Einfach im Objektinspektor das entsprechende Häkchen setzen.

Eine Möglichkeit, die Taskbar-Previews und den Taskbar-Fortschrittsbalken von Windows 7 zu benutzen, habe leider nicht gefunden. Beides sind inzwischen Standardfunktionen in vielen Programmen, sodass ich hier ein wenig enttäuscht bin.

[url=files.entwickler-eck..._review/gesture.png]user defined image[/url]
Entschädigt wird man von der Unterstützung für Touchgesten. Hier, muss ich sagen, gab es einen regelrechten "WTF-Moment" bei mir. Mein Testprojekt enthält eine Listbox und ich möchte per Geste Items daraus entfernen. Das geht so: GestureManager auf die Form, ActionManager dazu. Bei der Listbox im Objektinspektor unter "Touch" den GestureManager auswählen und der Standardgeste "Right" (von links nach rechts ziehen, wie durchstreichen also) die Standardaktion "Liste -> TListControlDeleteSelection" zuordnen. Fertig. Wir haben Touchunterstützung in unserer Anwendung. :shock:

Dass man den ActionManager noch dazu packen muss, muss man allerdings wissen (oder im Buch zur IDE nachgucken ;-)), sonst bleibt die Aktionenliste leer. Vergisst man den GestureManager, bekommt man einen Hinweis, obwohl das viel offensichtlicher ist. Egal, das ist eine Kleinigkeit, ich bin sehr begeistert.

Die Begeisterung nimmt noch zu, wenn man mal einen Doppelklick auf den GestureManager macht: Dort kann man dann eigene Gesten Zeichnen und Bearbeiten. Man kann die Geste "in einem durch" zeichnen und anschließend jeden einzelnen Punkt verschieben, Punkte löschen und auch einfügen. Außerdem zeigt der Editor, wenn einen neue Geste mit bestehenden Gesten in Konflikt steht. Das macht insgesamt einen sehr komfortablen Eindruck.

Ein vollwertiges Touch-Keyboard, welches man in seine Anwendung einbinden kann, gibt es übrigens auch. Jetzt darf man nur noch hoffen, dass Windows sich auf Geräten mit Touchscreen auch durchsetzt. ;-)

VCL-Quelltext
Der Quelltext der VCL ist in der Starter Edition leider nicht dabei. Das ist eine durchaus verständliche Einschränkung, auch wenn ich immer gerne einen Blick hinter die Kulissen geworfen habe.


Zwischenfazit zum GUI-Teil: Der Designer arbeitet gut, schnell und zuverlässig. Die Umsetzung der neuen Funktionen von Windows Vista und Windows 7 schwankt zwischen "absolut genial" und "gibt's nicht". Hier könnte an der ein oder andeen Stelle nochmal nachgebssert werden. Die Touchunterstützung ist der Hammer!



Der Code-Editor

Nun habe ich aber genug von der Oberfläche geredet, jetzt geht es darunter. Wie eigentlich alles bisher geht der Wechsel vom Designer in den Codeeditor instantan. Eine Möglichkeit, Designer und Code in zwei verschiedenen Fenstern anzuzeigen, habe ich übrigens nicht gefunden. Ich bin das inzwischen nicht anders gewohnt, aber es soll user profile iconLeute geben, die das nicht mögen ;-)

[url=files.entwickler-eck...ew/code_insight.png]user defined image[/url]
Leider muss ich sagen, dass mir der Code-Editor nicht wirklich gut gefällt. Fangen wir mit einem wesentlichen Feature an: Code Insight. In der Standardeinstellung wird das nicht automatisch angezeigt, sondern man muss Strg+Leertaste drücken. Nach einem Punkt wird Code Insight automatisch angezeigt. In dieser Einstellung wird der erste Eintrag in der Vorschlagsliste automatisch ausgewählt.

Ändert man jedoch die Einstellung so, dass Code Insight automatisch angezeigt wird, wird der erste Eintrag nicht mehr automatisch ausgewählt, auch nicht nach einem Punkt. Ich muss also erst den Eintrag mit der Maus oder der Cursortaste auswählen und dann die Eingabetaste drücken. Das nervt einfach nur. Keine der beiden Einstellungen sorgen bei mir dafür, dass ich flüssig mit Code Insight arbeiten kann.

Clever verhält sich Code Insight, wenn es um einen Methodenaufruf geht. Hier schaut es sich an, von welchem Typ der aktuell einzugebende Parameter ist und wenn es z.B. eine Enumeration ist, werden die Elemente dieser Enumeration ganz oben in der Vorschlagsliste platziert. So mag ich das!

Auch ein nettes Feature ist der Sync-Bearbeitungs-Modus: Markiert man einen Textteil, werden identische Textteile markiert und wenn man einen dieser Teile ändert, werden alle anderen identischen Teile "live" mitgeändert. Also im Prinzip ein Suchen/Ersetzen, nur dass man keinen Dialog braucht und auch noch zugucken kann. :-)

Mit an Bord ist auch Code Folding, sowohl für Abschnitte, die vom Code vorgegeben sind (also z.B. Klassen oder Prozeduren) als auch für selbst-definierte Regionen. Delphi merkt sich auch, was man auf- und was zugeklappt hatte.

Tja, und hier endet es dann eigentlich auch schon mit den Features des Editors. :nixweiss: Ein Blick in die Featurematrix verrät mir, dass Refactoring nicht zur Starter Edition gehört, einschließlich der Klassenvervollständigung per Strg+Shift+C. Das ist schon eine deutliche Einschränkung, von der ich aber bisher nichts gehört hatte. Und da die Hauptarbeit eines Programmierers auch immer noch im Editor stattfindet, ist das für mich eine wesentliche Einschränkung. Als Beispiel fällt mir da ein, dass man Variablen nun wieder selber oben in der Variablensektion deklarieren muss und es keinen Shortcut zu einem entsprechenden Refactoring gibt. Gepaart damit, dass man in Delphi Variablen dort deklarieren muss, ist das einfach extrem hinderlich.

Fehlen tut leider auch, dass man mit Strg+Shift+Hoch/Runter zwischen Interface- und Implementation-Abschnitt springen kann.

Die Einrückung per Strg+Shift+U/I scheint einen kleinen Fehler zu haben: "aus"rücken geht, einrücken nicht. Der Uraltshortcut Strg+K+U/I funktioniert jedoch.

Auch nicht auffinden konnte ich die Funktion, dass Fehler im Code schon im Editor rot unterkringelt werden. Das würde einem schon den ein oder anderen Kompiliervorgang sparen.

Als Nützlich herausstellen kann sich die Historie, in der man alle Versionen der Datei, die man mal gespeichert hat, aufrufen kann. Wer kein Versionskontrollsystem einsetzt, wird dafür dankbar sein.

Zwischenfazit: Der Editor ist ein klarer Schwachpunkt. Als Hilfe für den Programmierer gibt es Code Insight, aber auch das finde ich nicht glücklich umgesetzt. Mehr bietet der Editor nicht. Das ist natürlch der Tatsache geschuldet, dass wir es hier mit einer Einsteiger-Version zu tun haben, insofern kann man Embarcadero keinen Vorwurf machen, aber zumindest sollte man deutlicher auf diese Einschränkung hinweisen.



Die Sprache

Ich schaue mir die Sprache als jemand an, der seit Jahren nicht mehr mit Delphi, sondern mit Delphi Prism oder C# gearbeitet hat, der was Sprachfeatures angeht also schon ziemlich verwöhnt ist. Auf der anderen Seite hatte Embarcadero ja auch diese Jahre Zeit, neue Features einzubauen ;-) An dieser Stelle hangel ich mich ein bisschen an dem Buch "Delphi XE Starter Essentials" von Bob Swart entlang, um zu sehen, was für neue Sprachfeatures es gibt. Das wird aber exemplarisch bleiben, ein vollständiger Überblick dürfte den Rahmen dieses Artikels sprengen und auch langweilig werden.

Erweitertes Exit-Statement
Endlich kann man mit dem Exit-Statement auch einen Wert zurückgeben, indem man das Exit-Statement mit dem Wert als Parameter aufruft. Es ist gibt natürlich verschiedene Philosophien dazu, ob man Exit benutzen sollte. Wer es benutzt, wird diese Erweiterung praktisch finden.

Generics
Eines der nützlichsten Feature seit Erfindung der if-Schleife und der for-Bedingung sind Generics. Diese haben mit Delphi 2009 ihren Weg inzwischen auch nach Delphi (Win32) gefunden, also darf ich sie jetzt auch mal antesten.

Es gibt sowohl generische Klassen, als auch generische Methoden, ebenso werden Generic Constraints unterstützt. Hier finde ich die Art, wie Generic Constraints angegeben werden übrigens eher pascal-like als die Lösung, die in Delphi Prism gewählt wurde ("where T is MyClass").

Der Editor scheint aber noch nicht vollständig an Generics gewöhnt worden zu sein, so macht er bei folgendem Beispiel doch einige Fehler:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
   TMyClass = class
     Value : Integer;
   end;

  
   TForm1 = class(TForm)
     // ...
     function Compare<T : TMyClass>(a, b : TMyClass) : Integer;
     // ...
   end;
  

function TForm1.Compare<T>(a, b : TMyClass) : Integer;
begin
  if a.Value > b.Value then exit(1);
  if a.Value < b.Value then exit(-1);
  exit(0);
end;

Legt man zuerst TMyClass an und dann im Interface-Teil die Methode, kann man zwar keine Klassenvervollständigung benutzen, wohl aber Code Insight, um im Implementation-Teil die Methode anzulegen. Der schlägt einem nach der Eingabe von "TForm1." auch brav die Compare-Methode vor, vergisst beim Einfügen aber prompt den Typparameter "" und den Rückgabewert samt Semikolon. Ups.

Weiterhin weiß Code Insight trotz des Generic Constraints nichts davon, dass die Variablen a und b das Feld Value besitzen müssen. Code Insight zeigt einem da schlicht gar nichts an.

Gut finde ich, dass direkt auch einige generische Klassen mitgeliefert werden, wie z.B. TList oder TDictionary.

Anonyme Methoden
Wieder so ein Feature, von dem es mich sehr freut, dass man es endlich in Delphi benutzen kann. Insbesondere, wenn man von Threads auf die GUI zugreifen will, spart es einem einen Haufen Methoden und erhöht die Übersichtlichkeit, weil der Zugriff auf die GUI wieder an der Stelle im Code steht, wo man ihn eigentlich ausgeführt haben will!

Die Syntax erscheint mir auch hier gelungen zu sein:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
TMyFunc = reference to function(x : Integer) : Integer;
// ...
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
  p : TMyFunc;
begin
  i := 5;
  p := function(x : Integer) : Integer
  begin
    result := x + i;
  end;

  ShowMessage(IntToStr(p(5)));
  i := 7;
  ShowMessage(IntToStr(p(5)));
end;

Leider bietet mir Code Insight nach "p := " nicht direkt an, den Rest des Methodensignatur für mich zu schreiben, obwohl die ja eigenlicht redundant ist.

Dafür habe ich anhand obigen Beispiels erfreut festgestellt, dass auch Closures unterstützt werden. Feine Sache, das!

Klassen-...
Der Titel ist etwas kryptisch, aber hier möchte ich erwähnen, dass Delphi nun Klassenvariablen, Klasseneigenschaften, Klassenkonstruktoren und Klassendestruktoren unterstützt. Die ersten beiden sind mit Delphi 2006 eingeführt worden, die letzten beiden mit Delphi 2010. Aber besser spät als nie, es sind auf jeden Fall sinnvolle Ergänzungen der Sprache!

Operator Overloading
Ich war eigentlich erfreut, als ich las, dass dies geht. Leider musste ich sehen, dass das nur für Records, aber nicht für Klassen implementiert wurde. Da wurde meiner Meinung nach viel Potential für ein wirklich nützliches Feature verspielt.

Unicode-Unterstützung
Für mich neu ist auch die Unicode-Unterstützung. Für diese wurde Sprache, VCL und die IDE geändert, sodass nun durchgehend der Unicode-Zeichensatz verwendet werden kann. Die Diskussionen zur Umsetzung in Delphi möchte ich an dieser Stelle nicht wieder aufgreifen, es würde auch den Rahmen des Reviews sprengen, im Detail auf dieses Thema einzugehen. Für mich ist es positiv, dass hier ein Schritt gegangen wurde, der sowohl von der puren Menge an zu änderndem Code (VCL) und der Schwierigkeit der Änderung (Abwärtskompatiblität) groß war.


Zwischenfazit zur Sprache: Da hat sich wirklich einiges getan, man merkt, dass versucht wird, den Rückstand den man sich zwischenzeitlich auf andere Sprachen eingehandelt hatte, wieder aufzuholen. Das kann man nur loben! Ich habe (zugegeben nach wenigen Stichproben) aber den Eindruck, dass der Editor manchmal nicht ganz mit der Entwicklung der Sprache mitgehalten hat.



Der Debugger

Nach Hinweisen aus dem Forum möchte ich an dieser Stelle auch noch auf den Debugger eingehen.

Im Quelltext können Breakpoints gesetzt werden, die man auch an Bedingungen knüpfen kann (also dass z.B. eine Variable einen bestimmten Wert haben muss, es gibt aber auch die Bedingung "Durchlaufzähler") und z.B. auf einen bestimmten Thread beziehen kann. Auch ist einstellbar, was mit späteren Exceptions passieren soll. Die Einstellmöglichkeiten erscheinen mir eine gute Sache zu sein und würden in meinem "Debuggingalltag" voll und ganz ausreichen.

[url=files.entwickler-eck...review/debugger.png]user defined image[/url]
Wird der Haltepunkt einmal erreicht, wendet sich das Blatt jedoch. Ist man es aus anderen IDEs (auch aus der Turbo-Version) gewöhnt, dass man den aktuellen Variableninhalt als Hint angezeigt bekommt, wenn man mit der Maus über dem Variablennamen verweilt, geht dies hier anscheinend nicht. Hier muss man umständlich über das Kontextmenü gehen, dort dann "Fehlersuche" -> "Ausdruck am Cursor anzeigen". Schneller geht es mit dem Shortcut Strg+F5, aber bequem ist das auch nicht.

Visualisierungen zur Anzeige von z.B. Stringlists gibt es leider nicht. In den Optionen der IDE gibt es zwar die entsprechende Liste ("Registrierte Visualisierungen"), diese ist aber leer. So wird mir für eine Stirnglist leider nur ein "()" als Inhalt angezeigt. Das ist ganz schwach.

Vielen Dank an user profile iconjaenicke, der mir mit Screenshots der "großen" Version half, zu verifizieren, dass ich keinen Fehler in den Optionen mache.

Zwischenfazit zum Debugger: Die Möglichkeiten zum Anlegen von Haltepunkten sind gut. Der Rest ist einfach nur unglaublich umständlich und für produktives Arbeiten schlicht unbrauchbar.



Die Hilfe

Die Hilfe erkannte in meinen Tests den Kontext, in dem sie aufgerufen wurde, absolut zuverlässig und war dann auch schnell zur Stelle. Einzig wenn Code Insight noch offen ist, kommt sie ein bisschen aus dem Tritt. ;-)

Als VS2010-Nutzer bin ich dankbar dafür, dass die Hilfe nicht im Browser zwischen diversen anderen Internetseiten in einem Tab geöffnet wird, sondern "wie es sich gehört" in einem eigenen Fenster erscheint. Danke, Embarcadero!

Wie gut eine Hilfe wirklich ist, kann man wahrscheinlich erst herausfinden, wenn man wirklich mal eine Information braucht - das ist etwas, was man in einem Review schlecht "simulieren" kann. Aber mein Eindruck ist, dass die Hilfe gut zu gebrauchen ist. Bei meinen Stichproben bekam ich verständliche und oft auch ausführliche Erklärungen und zu praktisch jedem Thema entweder ein Codebeispiel oder weiterführende Links. Das hat mir wirklich gut gefallen! :-)

Nicht gefallen tut mir allerdings, wie die Member von Klassen aufgelistet werden. Eine Liste mit allen Member, gruppiert nach Typ (Konstruktoren, Methoden, Eigenschaften, Felder) gibt es nicht, für jedes muss man eine eigene Seite aufrufen. Das ist aber wohl reine Geschmackssache, wie ich zugeben muss.

Was aber irgendwie ganz komisch ist, ist, dass nur die wirklich in dieser Klasse implementierten Member aufgelistet werden. Rufe ich also die Funktionen von TForm auf, stehen da erst einmal nur fünf Stück! Um alle geerbeten Member zu erhalten, gibt es die Seite "Geerbte Member". Die sind dann danach gruppiert, von welcher Klasse sie geerbt sind, jedoch sind Eigenschaften und Funktionen durcheinander geworfen. Das ist irgendwie gar nicht gut gelöst. :?

Da im Forum danach gefragt wurde: Wenn ich das richtig sehe, listet die Hilfe nur öffentliche Member und nicht diejenigen, die protected sind.

Zwischenfazit: Die Hilfe scheint umfangreich zu sein und lieferte beim Aufruf im Kontext ziemlich punktgenau die Informationen, die man haben wollte. Mal die Member einer Klasse zu durchstöbern, wenn man nicht genau weiß, wonanch man sucht, kann ich mir auf Grund der merkwürdigen Struktur aber weniger gut vorstellen.



Einbindung von SVN

Delphi arbeitet nun auch mit lokalen und entfernten SVN-Repositories zusammen. So kann man seine Projekte von Delphi aus einem Repository hinzufügen und auch die Änderungen einchecken. Auch ist es möglich, das Protokoll der Änderungen anzusehen.

Allerdings erscheint mir die Einbindung doch ein wenig lieblos. Weder gibt es in der Projektverwaltung Statusicons an den Dateien, die einem sagen, welche Dateien geändert wurden, noch kann aus dem Protokoll heraus ein Diff-Tool aufrufen, um Dateiversionen zu vergleichen. Hier muss man dann doch wieder zu Programmen wie tortoiseSVN greifen. Übrigens zeigt auch die Historie im Editor weiterhin die "eigene" Historie und greift nicht auf die Daten aus dem SVN-Repository zurück.

Zwischenfazit: Es ist gut, dass man anfängt, eine solche Funktion in die IDE zu integrieren. Aber so lange mir z.B. tortoiseSVN so viel mehr bietet, ist es wirklich nur ein Anfang.



Das große, allumfassende Fazit ...
... möchte ich hier nicht ziehen, denn das muss jeder selber für sich tun. Für mich ist das Bild, welches sich mir nach Jahren der Abstinenz von Delphi bietet, ein Bild mit Licht und Schatten.

Delphi XE Starter Edition stellt sich mir als stabile und extrem schnelle IDE dar. Der Designer lässt kaum Wünsche übrig. Die VCL wurde mit neuen Komponenten erweitert, nicht immer hat mir die Umsetzung gefallen. Das Gesamtbild ist hier aber eindeutig positiv.

Wirklich enttäuscht hat mich der Editor, der durch die Beschneidungen der Starter Edition und der Tatsache, dass ich mich mit dem Verhalten von Code Insight nicht anfreunden kann, für mich persönlich ein besseres Notepad ist. Ersteres ist natürlich dem reduzierten Preis geschuldet und letzteres kann aber auch Gewöhnungssache sein, aber wirklich glücklich bin ich damit nicht.

Die Entwicklung der Sprache stimmt mich dagegen wieder milde. Hier wurde viel getan, viele lang vermisste Features sind nun da und ich hoffe, dass das auch in Zukunft so weiter geht. Dank der neuen Sprachfeatures habe ich Lust bekommen, auch mal wieder etwas mit Delphi zu machen.

Der Debugger ist schlicht nicht gut und schränkt die Produktivität sehr stark ein.

Die Hilfe hat eine etwas komische Struktur, die mir nicht wirklich gut gefiel. Die Inhalte machten aber einen guten und ausführlichen Eindruck und die Kontexthilfe funktionierte zuverlässig.



Danksagung
Ich möchte Embarcadero danken, dass sie eine Lizenz der Delphi XE Starter Edition zur Verfügung gestellt haben!
Außerdem danke ich user profile iconKlabautermann und user profile iconMartok fürs Korrekturlesen.


Revision 2, 06.02.2011, 12:13: Ich habe irrtümlich geschrieben, dass Klassenvariablen und -eigenschaften nach den Turbo Editionen eingeführt wurden, es war aber mit Delphi 2006. Danke an user profile iconjaenicke für den Hinweis.
Revision 3, 06.02.2011, 13:40: Hinweis auf fehlenden VCL-Quelltext eingefügt
Revision 4, 06.02.2011, 15:48: Abschnitt "Editor" um Code Folding und Shortcuts erweitert.
Revision 5, 06.02.2011, 16:49: Abschnitt "Die Hilfe" hinzugefügt.
Revision 6, 07.02.2011, 14:40: Abschnitt "Debugger" hinzugefügt und Fazit überarbeitet