Borland Delphi
Delphi ist zum einen der Name einer von der Firma Borland entwickelten objektorientierten Programmiersprache, die ursprünglich aus der von Niklaus Wirth erstellten Programmiersprache Pascal hervorgegangen ist und zum anderen die Bezeichnung einer ebenfalls von der Firma Borland entwickelten Entwicklungsumgebung. Im November 2006 wurden die Entwicklerteams der Entwicklungswerkzeuge, darunter auch Delphi, von Borland in eine neue Tochtergesellschaft Namens CodeGear ausgegliedert.Die Sprache Delphi
Delphi basiert auf der Programmiersprache Object Pascal. Borland benannte Object Pascal jedoch 2003 in Delphi-Language um, mit der Begründung, dass sich bereits so viel in der Sprache verändert habe, dass man es nicht mehr mit Pascal vergleichen könne. So wurden, zum Beispiel, viele originäre Konstrukte, wie sie von Niklaus Wirth für Pascal als Programmiersprache zu Schulungszwecken erdacht worden sind (wie eine absolut strenge Typisierung) durch die aus der Praxis resultierenden Erfordernisse aufgeweicht.
Zuerst eingeführt wurde Delphi mit der Entwicklungsumgebung Delphi, inzwischen ist sie mit Kylix auch für Linux verfügbar. Auch von Drittanbietern wurde diese Sprache eine Zeit lang angeboten, so von Speedsoft, einer deutschen Firma, unter dem Namen Speed Pascal bzw. Sibyl, als auch von der britischen Firma fPrint UK Ltd. unter dem Namen Virtual Pascal. Beide wurden ursprünglich für OS/2 entwickelt und später nach Windows und Linux portiert. Die Entwicklung von Sibyl durch die Firma Speedsoft wurde anscheinend eingestellt, und die Quelltexte wurden teilweise veröffentlicht. Einige Entwickler entwickeln Sibyl als Open-Source Projekt, unter dem Namen WDSibyl, weiter. Virtual Pascal ist inzwischen ebenfalls als Freeware erhältlich. Daneben gibt es noch das ebenfalls kostenlose Free Pascal, welches unter der GPL steht und mit Lazarus als RAD-IDE ein freies Gegenstück zu Borlands Implementierungen bietet.
Eine wesentliche Erweiterung gegenüber der Ursprungssprache Pascal ist die Einbeziehung objektorientierter Sprachmerkmale. Delphi ist aber nicht die erste objektorientierte Erweiterung von Pascal. Borland hatte bereits bei Version 5.5 von Turbo Pascal ein Objektmodell eingeführt, das interessanterweise von den Delphi-Compilern bis Version 7.0 und ab Version 2006 (10.0) immer noch unterstützt wird, wenn man auch nach einer Dokumentation vergeblich sucht. Delphi 8 für .NET unterstützt sie nicht. Mit dem Erscheinen von Borland Delphi 7 wurde die Programmiersprache offiziell von ObjectPascal in Delphi umbenannt.
Object Pascal ist die Grundlage der visuellen Klassenbibliothek Visual Component Library (VCL), sowie der neueren Component Library for Cross Platform (CLX), auf der Kylix basiert. Beide Bibliotheken sind stark miteinander verwandt, und es ist häufig einfach, eine für die VCL geschriebene Komponente nach CLX zu portieren.
Einige der Elemente und Ideen von Object Pascal wurden in die neue Programmiersprache C# von Microsoft übernommen. Einer der Gründe ist, dass Anders Hejlsberg, vormals Mitentwickler von Delphi bei Borland, zu Microsoft wechselte und maßgeblich an der Entwicklung von C# beteiligt war.
Einzelheiten
Delphi ist keine asketische Sprache: So beruht der größte Teil der Funktionalität auf Klassenbibliotheken, andere sehr häufig benötigte Funktionen werden direkt vom Compiler umgesetzt, so z. B. die nahtlose Integration der COM-Technologie unter MS Win32. Der direkte Zugriff auf das Windows API ist möglich. Von Drittanbietern gibt es eine unüberschaubare Zahl von Komponenten und Assistenten mit denen fast alle Probleme gelöst werden können (siehe Weblinks).
Ab der Version 6.0 wurden die Bibliotheken (bis zu diesem Zeitpunkt nur die Visual Component Library für Windows) um die Cross_Plattform_Library_CLX erweitert, die die Lauffähigkeit eines Programms unter Windows und Linux ermöglichen sollte.
Gleichzeitig wurde die Linuxportierung Kylix aus der Taufe gehoben.
In Delphi werden Objekte grundsätzlich nicht auf dem Stack angelegt. Statt dessen werden alle Objekte dynamisch angefordert (mit Ausnahme der alten Objekte aus Turbo Pascal, die nur eingeschränkt genutzt werden können).
Beispiel einer Klassen-Deklaration
type
TCommonObject = class
private
FSomeInternalValue: integer; // wird von SomeCommonProtectedMethod verwendet
protected
procedure SomeCommonProtectedMethod;
function GetSomeCommonValue: integer; virtual; abstract;
published
property SomeCommonProperty: integer read GetSomeCommonValue;
end;
TMyObject = class(TCommonObject)
private
FSomePrivateField: integer;
protected
function GetSomeCommonValue: integer; override;
procedure SomeProtectedMethod(Param1: integer; const Param2: string; out OutParam: string); virtual;
procedure SetSomeOtherProperty(Value: integer);
function GetSomeOtherProperty: integer;
public
constructor Create;
destructor Destroy; override;
procedure SomePublicMethod;
published
property SomePublishedProperty: integer read FSomePrivateField; // kann nur gelesen werden
property SomeOtherProperty: integer read GetSomeOtherProperty write SetSomeOtherProperty;
end;
Dieses Beispiel definiert die zwei Klassen
TCommonObject und TMyObject. TCommonObject beschreibt eine abstrakte Klasse, zu deren Entwurfszeit noch nichts über die konkrete Implementierung der Methode GetSomeCommonValue bekannt ist. Jedoch kann es für die weitere Verarbeitung verschiedener Nachfahren von TCommonObject zwingend erforderlich sein, dass diese Methode vorhanden ist. TCommonObject enthält also all diejenigen Methoden und Eigenschaften, die allen Nachfahren gemein sind.Hier im Beispiel wird
GetSomeCommonValue erst in der Klasse TMyObject, die sämtliche Methoden und Eigenschaften von TCommonObject erbt, konkret implementiert.= Sichtbarkeitsbereiche
=Wie im Beispiel zu erkennen, bestehen Klassen in der Delphi Language aus vier, ab Delphi 8 aus sechs, Sichtbarkeitsbereichen, die man auch Sichtbarkeitsattribute nennt:1) Eine Unit ist eine Datei/Modul eines Programms, welche beim Kompilieren eingebunden werden.
2) Erst ab Delphi 8 (.NET).
3)
published fügt außerdem Runtime Type Informations (RTTI) hinzu und steuert so u. a. die Sichtbarkeit im Object Inspector.4) Wird nur für die Datenkapselung (Information Hiding), indem ein direkter Zugriff auf die Variable verhindert wird und die Methode entscheiden kann, welchen Wert sie beim Lesen herausgibt und beim Ändern eines Wertes akzeptiert, was einen ADT (abstract data type) auszeichnet. Wird beispielsweise wie bei
property SomePublishedProperty keine write-Methode angegeben, so handelt es sich um eine Nur-Lese-Variable.Array Properties haben folgende Syntax:
property SomeArrayProperty[index1:TIndexType]:TDatatype read SomeArrayProperty write SomeArrayProperty
Mit Array Properties lassen sich Assoziative_Arrays nachbilden.
= Die dazugehörige Implementierung
=constructor TMyObject.Create; // legt eine Objektinstanz an
begin
inherited; // Konstruktor der Oberklasse aufrufen
fSomePrivateField := 42; // das private Feld mit 42 initialisieren
end;
destructor TMyObject.Destroy;
begin
inherited; // Destruktor der Oberklasse aufrufen
end;
function TMyObject.GetSomeCommonValue: integer;
begin
Result := FSomeCommonValue * 2
end;
procedure TMyObject.SomeProtectedMethod(Param1: integer; const Param2: string; out OutParam: string);
var
i: integer; // Deklaration lokaler Variablen
begin
OutParam :=
// Ausgabeparameter mit dem Eingabeparameter Param1-mal konkatenieren:
for i:=1 to Param1 do
OutParam := OutParam + Param2;
end;
procedure TMyObject.SomePublicMethod;
begin
Inc(fSomePrivateField); // privates Feld hochzählen
end;
procedure SetSomeOtherProperty(Value: integer);
begin
fSomePrivateField := Value * 5;
end;
function GetSomeOtherProperty: integer;
begin
Result := fSomePrivateField div 5;
end;
Beispiel eines Buttonklicks
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := 'Wikipedia';
end;
= Erklärung
=In diesem Falle wird die "procedure TForm1.Button1Click" aufgerufen. TForm1 bedeutet, dass sich diese Prozedur in Form1 befindet. "Button1Click" legt den Namen fest. In dieser Form ist diese Prozedur immer mit "Button1Click" aufrufbar. Von einer anderen Form aus muss Form1. davorgesetzt werden. "begin" und "end" stellen Anfang und Ende dieser Prozedur da. In "Button1Click" wird die Eigenschaft "Caption" (Beschriftung) von Label1 in Wikipedia geändert.
Syntax
= Elementare Datentypen
={| border="1" cellpadding="3" cellspacing="0" style="border-collapse: collapse; border-color:#000000"
|- bgcolor="#E0E0E0"
! Name || Größe || Wertebereich || Beschreibung
|-
|
ByteBool / Boolean || 1 Byte || true oder false || boolescher_Wert|-
|
WordBool || 2 Byte || true oder false || boolescher Wert|-
|
LongBool || 4 Byte || true oder false || boolescher Wert|- bgcolor="#F8F8F8"
|
Byte || 1 Byte || 0 bis 255 || vorzeichenlose 8-Bit-Ganzzahl/'>- bgcolor="#F8F8F8"
|
Word || 2 Byte || 0 bis 65535 || vorzeichenlose 16-Bit-Ganzzahl|- bgcolor="#F8F8F8"
|
Longword || 4 Byte || 0 bis 4.294.967.295 || vorzeichenlose 32-Bit-Ganzzahl|-
|
UInt64 || 8 Byte || 0 bis 18.446.744.073.709.551.615 || vorzeichenlose 64-Bit-Ganzzahl, undokumentiert, teilweise fehlerhaft, beispielsweise keine Literale oberhalb von 263?1|-|
ShortInt || 1 Byte || ?128 bis 127 || vorzeichenbehaftete 8-Bit-Ganzzahl|-
|
SmallInt || 2 Byte || ?32.768 bis 32.767 || vorzeichenbehaftete 16-Bit-Ganzzahl|-
|
LongInt || 4 Byte || ?231 bis 231?1 || vorzeichenbehaftete 32-Bit-Ganzzahl|-
|
Int64 || 8 Byte || ?263 bis 263?1 || vorzeichenbehaftete 64-Bit-Ganzzahl|- bgcolor="#F8F8F8"
|
Real48 || 6 Byte || 2,9·10?39 bis 1,7·1038 || 48-Bit-FPU gerechnet wird|-
|
Currency || 8 Byte || ?922.337.203.685.477,5808 bis 922.337.203.685.477,5807 || vorzeichenbehaftete 64-Bit-Festkommazahl|- bgcolor="#F8F8F8"
|
Char || 1 Byte || #0 bis #255 || 8-Bit-Zeichen, z. B. ASCII-/ANSI-Zeichen/'>- bgcolor="#F8F8F8"
|
WideChar || 2 Byte || #0 bis #65535 || 16-Bit-Zeichen, z. B. ADO auf Datenbanken zugegriffen werden.Diese Erweiterung musste in der Professional-Version allerdings als ADO Express zugekauft werden.
Außerdem hielten Komponenten Einzug, mit denen via OLE auf Microsoft Office-Anwendungen zugegriffen werden konnte. Dies war allerdings durch direkten Aufruf der OLE-Befehle schon vorher möglich.
Delphi 6 (Codename: Iliad)
Delphi 6 wurde im Mai 2001 veröffentlicht.
Mit Delphi 6 konnte erstmals mit dem zusätzlichen Modellierungswerkzeug Modelmaker aus UML-Modellen Delphi-Programmcode erzeugt werden. Modelmaker erlaubt das Erstellen von Diagrammen in der Unified Modeling Language UML, einer Standardsprache zur Modellierung objektorientierter Systeme. Die manuelle Programmierung kann so auf ein Minimum reduziert werden.
Für Datenbankzugriffe hielt die neue Schnittstelle dbExpress einzug.
Delphi 7 (Codename: Aurora)
Delphi 7 wurde im August 2002 veröffentlicht.
Mit Delphi 7 wurde ein Preview Compiler für .NET-Entwicklung in Delphi ausgeliefert.
Das Modellierungswerkzeug Modelmaker wurde ab dieser Version in Delphi integriert.
Auf http://www.borland.pl/download/personal.shtml ist Delphi 7 Personal Edition kostenlos erhältlich.
Delphi 8 (Codename: Octane)
Delphi 8 wurde im Dezember 2003 veröffentlicht.
Es umfasste nur .NET-Entwicklung.
Delphi 2005 (Codename: DiamondBack)
Delphi 2005 wurde seit November 2004 ausgeliefert. Neben nativen Windows-32-Bit-Anwendungen können mit Delphi 2005 auch .NET-Anwendungen in Delphi und C# erstellt werden. Im Gegensatz zu den Vorversionen Delphi 7 (Win32) und Delphi 8 (.NET) gibt es nun nur noch eine Delphi-IDE oder auch "Borland Developer Studio".
Mit Delphi 2005 hielten umfassende Neuerungen in die IDE Einzug, wie z. B. Refactoring. Auch die Programmiersprache selbst wurde um einige Funktionen, wie z. B. das For-Each-Konstrukt erweitert.
Der Compiler kann nun auch sprachspezifisch Zeichen interpretieren. So können im deutschen Quelltext auch die Sonderzeichen ä, ö, ü verwendet werden.
Die IDE zeigt Programmfehler sowie auch umfassende Hilfetexte in einer nie dagewesenen Übersichtlichkeit an.
Allerdings zeigten sich auch viele Fehler innerhalb der IDE und den mitgelieferten Komponenten, was zu einer gewissen Unzufriedenheit bei den Nutzern geführt hat, vor allem auch in Bezug auf die lange Ladezeit der IDE. Erst nach mehreren Updates und einigen inoffiziellen Bugfixes konnte man nach Meinung vieler Entwickler mit der IDE sinnvoll arbeiten.
Auch von Delphi 2005 existierte eine kostenlose Personal Edition, die unter http://www.delphipraxis.net/delphi2005download.php zu finden ist.
Delphi 2006 / BDS 2006 (Codename: DeXter)
Die aktuelle Version hat neue Sprachunterstützung im Delphi für Win32-Compiler für Records mit Methoden, Operatorüberladung und Klassenvariablen erhalten; damit wird fast der Stand der bestehenden Features des Delphi für .NET-Compiler erreicht.
Delphi 2006 enthält außerdem volle C++-Sprachunterstützung, inklusive VCL-Formdesigner (wie im Borland C++Builder), welche allerdings, da sie nicht rechtzeitig fertig wurde, erst mit Update 1 komplettiert wurde. Dies wurde ganz offiziell angekündigt, ein Novum in der Produktpolitik von Borland.
Viele der Fehler und Probleme der mit Delphi 2005 neu eingeführten IDE wurden in dieser Fassung behoben oder zumindest stark abgemildert (z. B. auch die lange Ladedauer der IDE). Borland hat sich anscheinend die Kritik der Entwickler-Community zu Herzen genommen und mit der neuen Version auch die Politik der Bugfixes verbessert. Inzwischen sind 2 Updates und (Stand 2007-02-18) über 10 Hotfixes erschienen, die die meisten bekannten Fehler beheben.
Die IDE enthält neue Funktionen wie z. B. die "Live Templates", Blockvervollständigung und Einrückung während des Tippens und veränderte Zeilen-Indikatoren am linken Editor-Rand.
Außerdem ist ein Kommandozeilen-Compiler für .NET-Compact-Framework-Anwendungen enthalten. Damit können prinzipiell Anwendungen für Windows CE und Pocket PCs erstellt werden, auch wenn der Formulardesigner noch nicht dafür ausgelegt ist, es noch keinen Debugger gibt und man einen Emulator von einer anderen Webseite herunterladen muss (kostenlos).
Seit dem 5. September 2006 gibt es von Delphi 2006 sog. "Turbo-Versionen". Es handelt sich dabei um abgespeckte Versionen des Borland Developer Studios 2006 (Professional).
Delphi 2007 for Win32 (Codename: Spacely)
Diese im März 2007 erschienene Version besitzt auf vielfachen Kundenwunsch nur die Delphi for Win32-Personality und wartet unter anderem mit folgenden Neuerungen auf: Anpassungen und Erweiterungen für Windows Vista, überarbeitetem Datenbankframework dbExpress, einer erweiterten Version von Intraweb mit Ajax-Unterstützung unter dem Namen "VCL for the Web" und einer überarbeiteten Hilfe. Diese Version ist auch die erste Version, die als Download über das Internet bezogen werden kann sowie alle Sprachen (Englisch, Deutsch, Japanisch, Französisch) zusammen enthält. Ebenfalls erschienen ist ein Delphi für PHP, welches aber außer dem Namen und einer gewissen Ähnlichkeit der IDE mit Delphi weiter nichts zu tun hat.
Delphi ? (Codename: Highlander)
Die kommende Version soll in der zweiten Hälfte des Jahres 2007 erscheinen und bessere Unterstützung für Unicode auch in der VCL enthalten sowie .NET 2.0 unterstützen. Die ursprünglich für diese Version angekündigte Unterstützung von mobilen Geräten auf Basis des Compact Frameworks wurde auf einen späteren Zeitpunkt verschoben.
Delphi ?? (Codename: Longhorn)
Das Borland Developer Studio 2008 ist für Ende 2007 angekündigt. In erster Linie sollen Windows_Presentation_Foundation und Windows_Communication_Foundation unterstützt werden sowie spezielle Unterstützung für Windows Vista hinzugefügt werden (daher auch der Codename Longhorn, den auch Microsoft in der Entwicklungsphase für Windows Vista nutzte)
Turbo Delphi
Aufgrund des Spin-offs der IDE-Sparte von Borland in das neue Unternehmen CodeGear, wurde eine neue "Turbo"-Produktlinie eingeführt, die wohl auf die Erfolge von Turbo_Pascal in den 1980ern und frühen 1990ern anspielen soll. Als neue "Turbo"-Produkte werden nun die Komponenten Delphi, Delphi for .NET, C++ und C# wieder als einzelne Module vertrieben.
Hierbei gibt es für alle Produkte eine kostenlose "Explorer"-Versionen, die insofern im Funktionsumfang eingeschränkt ist, dass sich die Tool-Palette nicht mit Komponenten von Drittherstellern erweitern lässt und der Programmierer daher mit den 200 mitgelieferten auskommen muss, es sei denn man erzeugt diese nur zur Laufzeit vom Programm heraus, was ineffizient in bezug auf die Entwicklungsgeschwindigkeit sein dürfte. Um die Entwicklungsumgebung auszuprobieren oder für kleinere Projekte dürfte das jedoch vermutlich ausreichen. Daneben gibt es "Professional"-Versionen, die um die 400 Dollar kosten und diese Einschränkung nicht haben. Allen Turbo-Versionen ist gemein, dass auf einem Rechner immer nur ein Produkt der Turbo-Reihe installiert werden kann. Dies hat allerdings keine lizenzrechtlichen, sondern nur technische Gründe.
Delphi-ähnliche Entwicklungsumgebungen
Für Linux/X11 auf Intel x86 ist ein ähnliches Paket unter dem Namen Kylix verfügbar, welches allerdings von Borland nicht mehr gepflegt wird.
Da die Entwicklungsumgebung zahlreiche Fehler enthält, gibt es zahlreiche Unternehmungen, diese zu stabilisieren und die Kompilate unter neuen Linux-Versionen lauffähig zu machen. Dazu zählen inoffizielle Bugfixes, als auch eine Alternative ([http://crosskylix.untergrund.net CrossKylix]), um den Kylix-Compiler unter Windows zu benutzen.
Für die Sprache C++ bot Borland ein ähnliches Entwicklungssystem namens C++Builder an. Frühere Versionen (bis zur Version 6.0) basierten auf der Delphi-IDE. Eine spätere Version des C++Builder (C++ BuilderX) war allerdings nicht mehr so stark mit Delphi sondern eher mit der Java-IDE JBuilderX von Borland verwandt.
Der C++Builder ist ? wie bereits der C# Builder ? Teil des BDS (Borland Developer Studio) 2006 geworden. Ursprünglich war in BDS 2006 nur eine Vorschau der C++ Personality enthalten. Die endgültige Version der C++ Personality konnte mit dem Update 1 nachgerüstet werden.
Lazarus ist eine stark Delphi-ähnliche IDE, die unter der LGPL steht. Die Lazarus-IDE basiert auf dem Free-Pascal-Compiler und ist unter Linux,MacOS(X) und Windows lauffähig ebenso können für diese Plattformen und ein paar andere Programme erzeugt werden.
Die von Microsoft vertriebene Entwicklungsumgebung Visual Basic ist ebenfalls mit Delphi optisch bis zu einem gewissen Grad vergleichbar, wobei der Sprachumfang zur Zeit jedoch, insbesondere objektorientierte Aspekte betreffend, nicht an den von Borland Delphi heranreicht. Zusätzlich benötigt jedes Programm, das in Visual Basic geschrieben wurde, die spezielle Visual Basic Runtime (Laufzeitumgebung). Die letzte von Microsoft herausgegebene Version Visual Basic 6 stammt aus dem Jahre 1998 und Microsoft hat den Support dafür im April 2005 eingestellt. Seitdem gibt es nur noch eine in der Programmiersprache inkompatible Version für das .NET Framework.
Der Name "Delphi"
Der Name Delphi hat seinen Ursprung in der starken Datenbankorientierung der Entwicklungsumgebung. Oracle ist sowohl der Name eines Datenbanksystems als auch das englische Wort für Orakel. Als bekanntestes Orakel gilt das Orakel von Delphi. Dieser Zusammenhang wird auch von Borland-Mitarbeitern als Ursprung des Namens [http://bdn.borland.com/article/0,1410,20396,00.html genannt].
Literatur
* Thomas Binzinger: Jetzt lerne ich Delphi. Der einfache Einstieg in Object Pascal ? für alle Versionen bis einschließlich Delphi 2006. Markt und Technik, München 2006, ISBN 3-8272-4108-1
* Walter Doberenz, Thomas Kowalski: Delphi 7 Kochbuch. Hanser, München 2003, ISBN 3-446-22325-8
* Richard Kaiser: Objekt Pascal mit Delphi ? Eine Einführung in die objektorientierte Windows-Programmierung. Springer, Berlin 2001, ISBN 3-540-60340-9
* Martin Pyka, DirectX 9 in Delphi, BoD, 2004, ISBN 3-833-40835-9
* Wolf-Gert Matthäus: Grundkurs Programmieren mit Delphi. Vieweg, 2004, ISBN 3-528-05863-3
* Hans-Georg Schumann: Delphi für Kids. Mitp-Verlag, 2005, ISBN 3-8266-1529-8 (besonders für Schüler/Kinder, aber auch für jung gebliebene)
*Hans-Georg Schumann: Delphi für Kids'', 2.Auflage, bhv-Verlag, ISBN 3-8266-1529-8, mit Delphi 7 Personal
Weblinks
* http://www.turboexplorer.com/ ? die offizielle Seite der Turbo-Versionen• die neue offizielle Seite vom Hersteller
* http://www.borland.de/delphi/ ? die offizielle Webseite vom Hersteller
* http://www.borland.com/products/downloads/download_delphi.html ? Downloadseite für Delphi
• Dokumentation zu Delphi
• Das Delphi Wiki (Englisch)
Hilfe
• Einführung in Delphi ein Tutorial
• SDL KnowledgeBase eine Datenbank mit ca. 5.000 Tipps und Tricks
• www.delphibasics.co.uk Run Time Library Reference
• Crashkurs Delphi in Deutsch
• Tutorials und Aufgabenblätter zu Delphi / Object-Pascal
• Grundkenntnisse und weiterführende Tipps und Tricks ein Tutorial (Deutsch)
• die Delphi-Ecke (Deutsch) mit vielen Programmen und Lektionen zum Download
Foren und Portale
* http://www.delphi-forum.de/ (deutsch) ? großes deutschsprachiges Forum zum Thema Delphi; Partnerforum von www.c-sharp-forum.de
* http://www.delphipraxis.net/ (deutsch) ? ebenfalls ein großes, deutschsprachiges Forum zum Thema Delphi
* http://www.dsdt.info/ (deutsch) ? Grundlagen, Tutorials, Tipps & Tricks und ein hervorragendes Forum.
* http://www.SwissDelphiCenter.ch/de/ (deutsch) ? Swiss Delphi Center: Viele Beispiele für verschiedene Probleme
* http://www.torry.net/ (englisch) ? große Komponentensammlung
* http://www.Delphi3000.com/ (englisch) ? Delphi-Artikel
* http://dn.codegear.com/delphi/components (englisch) ? CodeGears Komponentensammlung
* http://www.delphitricks.com/ (englisch) ? Tipps & Tricks
* http://delphi.icm.edu.pl/ (englisch) ? Komponenten-Portal aus Polen
* http://www.felix-colibri.com/ (englisch) Delphi-Artikel (database, Socket programming, Asp.Net helpers, SQL parser, design patterns)[[ta:?????????? ??????]

