Beiträge getagged ‘Delphi’

Kommt ein Delphi für Mac OS X und Linux?

12 Oktober 2009

Alan Bauer kündigte eine überarbeitete Delphi-Roadmap mit zwei aussagekräftigen Quelltext Check-Ins an:


25232 trunk/com/ scanner.c Thu Oct 8 20:41:10 2009 UTC ytagawa

Log:

[dcc64]
(scanner.c) Don't define ASSEMBLER for x64 for awhile.


25224 trunk/com/ codegen.c Thu Oct 8 12:35:00 2009 UTC eboling

Log:

Refactoring in PassParams to support changes to stack alignment code.
Changed the logic for aligning the stack for parameter lists for the Mac.

In den Logs erkennt man zwei heiße Themen. Zum einen ist das die lang erwartete 64bit-Unterstützung und zum anderen die Portierung der IDE auf Mac OS X und Linux. Beide Punkte wollen die Delphi-Entwickler bei Embarcadero in Zukunft angehen. Diese und weitere Ziele verraten die Slides einer Roadshow-Präsentation.

Dort ist die Rede von 4 großen Projekten, an denen derzeit parallel gearbeitet wird. Im Project "Waver" wird die IDE überarbeitet, die Arbeit im Team vorangetrieben und neue Funktionalitäten in die Sprache Delphi integriert.

Das Project Delphi "X" hat sich zum Ziel gesetzt die einst schnellste und erfolgreichste IDE auf die Plattformen Mac OS X und Linux zu hieven. Die Verfügbarkeit von Delphi auf anderen Plattformen ist ein von vielen Entwicklern bereits seit geraumer Zeit gehegter Wunsch. Mit Kylix gab es bereits früher Versuche auf Linux Fuß zu fassen. Jedoch scheiterte der Versuch kläglich. Infolgedessen wurde Kylix eingestellt.

Als drittes großes Projekt wird das Project "Chromium" genannt. Ziel dieser Entwicklung ist die Qualität der IDE. Dazu ist geplant, lange ausstehende Bugs zu beheben, die Handhabbarkeit sowie die Dokumentation zu verbessern und eine engere Integration von Datenbanktools anzubieten.

Last but not least gibt es das bereits bekannte Project "Commodore". Ziel dieser Bemühungen ist die vollständige Unterstützung von 64 Bit. Darüberhinaus soll die RTL und VCL besser für paralleles Arbeiten gewappnet werden.

Zeitangaben finden sich auf den Folien leider nicht, sodass es bis dato reine Spekulation ist, wann welches Feature und vor allem in welchem Umfang ausgeliefert wird. Laut Alan Bauer wird an mehreren Projekten gearbeitet.

Seit der Abspaltung der Entwicklertools von Borland und die Aussiedlung in CodeGear sowie der spätere Aufkauf durch den Datenbankspezialisten Embarcadero hat die IDE rund um Delphi und dem C++ Builder endlich wieder ordentlich Fahrt aufgenommen. Der Dornröschenschlaf, in den die Entwicklertools bei Borland gefallen sind, scheint überwunden zu sein.

Tagesaktuelle Hilfe für RADStudio, Delphi und C++ Builder

11 September 2009

Jeder Entwickler kennt sie; jeder Entwickler liebt sie: Die Hilfe in Delphi. Und jeder weiß auch, dass die Hilfe weit von der absoluten Perfektion entfernt ist. Das wissen die Leute bei Embarcadero auch und arbeiten deswegen täglich an der Verbesserung der Hilfe. Leider kommen die Verbesserungen nur durch Hilfe-Updates alle paar Monate zu den Entwicklern. Bis jetzt!

Die Leute bei Embarcadero haben in den letzten 2 Jahren intensiv an ihrem Dokumentationswiki gearbeitet, welches jetzt online verfügbar ist. Laut Dee Elling arbeiten die Hilfeschreiber direkt im Wiki, sodass Änderungen nicht mehr Monate brauchen, um bis zum Entwickler vorzudringen, sondern nun innerhalb weniger Sekunden bereitstehen. Das Wiki setzt sich aus insgesamt 9 Mediawikis zusammen. Die Wikiseiten dienen auch als Content Management System zur Erstellung der Microsoft Help2 Hilfeseiten, die mit dem RAD Studio ausgeliefert werden.

Dritte und letzte Sneak Preview von RAD Studio 2010 (Update)

1 September 2009

David I ist wieder in den Fluren von Embarcadero unterwegs und interviewt die verschiedenen Entwickler über Neuerungen im RAD Studio 2010. Diesmal geht es um Datenbankanbindung, Multi-Tier-Verbindung, einfachere Erzeugung eines DataSnap-Servers, Data Stream Control und neue Konnektivitätsprotokolle.

Update:
In der Zwischenzeit habe ich gelesen, dass das RAD Studio 2010 bereits veröffentlicht ist.

Multitouch und Gesten im RAD Studio 2010

12 August 2009

Embarcadero-Urgestein David I ist mal wieder bewaffnet mit einer Kamera unterwegs in den Fluren von CodeGear. Diesmal erwischte es Chris Pattinson, QA Manager für das RAD Studio. Er zeigte im zweiten Sneak Preview wie einfach es ist, Gesten und Multitouch in eigene Programme einzubauen.

Lecker. Bleiben noch zwei offene Fragen. 1. Wo bekomme ich das RAD Studio 2010 her und 2. Wer spendiert mir solch einen Touchscreen? :)

Embarcadero RAD Studio 2010 Sneak Preview

4 August 2009

Tja. Da steckt man auf Arbeit noch mitten in der Umstellung auf Delphi 2009, da folgt auch schon Delphi 2010. Anfang September soll das nächste RAD Studio erscheinen. Und dazu gibt es ein erstes Sneak Preview von Urgestein David I. und Produkmanager Nick Hodges. Beide zeigen sehr nette Features…

Besonders IDE Insight scheint ein wirklich perfektes Tool zu sein. Ein schneller Zugriff auf alles, was mit dem aktuell in Bearbeitung befindlichen Projekt zu tun hat. Kein elend langes Gesuche mehr nach der einen Projektoption, nach der meist genutzten Komponente oder einem Codeschnipsel. Einfach F6 gedrückt und in das Suchfeld den passenden Text eingegeben. Das möcht ich gern live ausprobieren :)

Auch nett ist die erweiterte Debuggerunterstützung. Endlich kann der Inhalt einer Stringliste im Debugger vernünftig angezeigt werden. Threads lassen sich benimmsen und wahlweise einfrieren und wieder aufwecken. Alles im Debugger. Hach da lacht das Programmiererherz :)

via RAD Studio 2010

Was haben RFID, Katzen, Delphi und Twitter gemeinsam?

17 April 2009

In der Regel nicht allzuviel. Doch gibt es, wo auch sonst, in den USA ein katzenvernarrtes Ehepaar(?). Die stolzen Besitzer zweier Katzen lassen ihre liebsten sowohl drinnen als auch draußen leben. Als Durchgang zwischen den Welten fungiert eine Katzenklappe. Nun hat sich unter den Vierbeinern in der Nachbarschaft herumgesprochen, dass es bei den beiden das leckerste Futter weit und breit gibt. Also war das ein perfekter Treffpunkt um sich über die fettesten Mäuse zu unterhalten und dabei lecker zu schlemmen.

Doch nicht mit dem Herrchen der beiden Mietzekatzen. Seines Zeichens Programmierer und Bastler hat kurzerhand eine “intelligente” Katzenklappe gebaut, die die beiden Wonneproppen an einem im Halsband integrierten RFID-Chip erkennt. Nur wenn der Chip passt, öffnet sich die Klappe.

Das ist jedoch noch nicht genug. Es geht noch besser. Jedesmal wenn eine der beiden Samtpfoten die Klappe durchläuft, wird ein Twitter-Feed gefüttert.

Und was hat das ganze nun mit Delphi zu tun? Nun, die Anwendung, die die Klappe steuert und den Twitter-Feed bestückt, ist mit Delphi programmiert worden, wie Nick Hodges zu berichten weiß.

Herrlich verrückt diese Leute :)

Self in Klassenprozeduren

11 April 2009

Bei der Programmierung mit Delphi verwende ich sehr oft Klassenprozeduren, um die Funktionalität einer konkreten Klasse aufzurufen. Innerhalb dieser Klassenprozedur wird eine Instanz der Klasse erzeugt, die benötigte(n) Methode(n) aufgerufen und die Instanz danach wieder freigegeben.

type
  TMeineKlasse = class(TObject)
  protected
    procedure MeineFunktion;
  public
    class procedure FuehreFunktionAus;
  end;
 
implementation
 
class procedure TMeineKlasse.FuehreFunktionAus;
begin
  obj := TMeineKlasse.Create;
  try
    obj.MeineFunktion;
  finally
    obj.Free;
  end;
end;

Das hat den Vorteil, dass ich von außen nur eben diese eine Klassenmethode aufrufen muss, ohne mich um das Erzeugen der Instanz und spätere wieder Freigeben kümmern zu müssen. Auch interessieren mich die Interna der Klasse außen nicht wirklich. Die Vorgehensweise passt sicherlich nicht überall, aber da wo sie passt, erspart sie mir Schreibarbeit.

Nun kommt es vor, dass genau so eine Klasse in einem abweichenden Kontext ein etwas anderes Verhalten aufweisen muss. Im Normalfall erstelle ich in solch einem Fall eine gemeinsame Basisklasse, die die Funktionalität implementiert, die in beiden Klassen gleich ist. Von dieser leite ich meine beiden konkreten Klassen ab. Da ich Informatiker bin und diese Spezies von Haus aus faul ist, möchte ich keinen Code doppelt schreiben und später pflegen müssen. So auch auch nicht meine oben angesprochene Klassenprozedur.

Doch wie erzeuge ich in der Klassenprozedur, die sich in meiner Basisklasse befindet eine Instanz von der jeweiligen konkreten Klasse? Die Lösung lautet Self. Self referenziert in einer Klassenprozedur die konkrete Klasse. Egal, ob die Klassenprozedur nun in einer meiner konkreten oder in der Basisklasse implementiert wurde. Das ganze sieht dann in etwa so aus:

class procedure TBasisKlasse.FuehreFunktionAus;
var
  obj: TBasisKlasse;
begin
  obj := Self.Create;
  try
    obj.MeineFunktion;
  finally
    obj.Free;
  end;
end;

Von dieser Basisklasse leite ich meine beiden koknreten Klassen TKonkreteKlasseA und TKonkreteKlasseB ab und überschreibe dort die protected Methode MeineFunktion um die abweichende Funktionalität zu implementieren.

Wenn ich nun von außen TKonkreteKlasseA.FuehreFunktionAus aufrufe, zeigt Self auf TKonkreteKlasseA und entsprechend beim Aufruf von TKonkreteKlasseB.FuehreFunktionAus auf TKonkreteKlasseB.

Für alle Intressierten habe ich das ganze in ein kleines Beispielprojekt gegossen: selfinklassenprozeduren.zip

CodeGear baut an einem neuen Compiler

7 Januar 2009

Seit geraumer Zeit gibt es bei CodeGear bereits die Pläne ein 64bit-Delphi zu veröffentlichen. Nick Hodges hat nun, wie Robert zu berichten weiß einen sehr interessanten Artikel über die Zukunft des hauseigenen Compilers veröffentlicht.

Kurz zusammengefasst besteht der Delphi- und der C++-Compiler aus einem Frontend und einem Backend. Das Frontend liest den Quelltext ein, überprüft ihn auf Korrektheit und baut daraus die DCUs. Das Backend schmiedet anschließend die DCUs zu einer ausführbaren Datei zusammen. So das grobe Prinzip.

Nun wäre es sicherlich mögilch, das Backend so umzustricken, dass es statt 32bit-Code 64bit-Code erstellt. Das wäre aber laut Nick Hodges nicht der richtige Weg und mehr Flickwerk denn wirkliche Neuentwicklung.

Daher besteht nun der Plan den Compiler komplett neu zu erstellen. Mit einem neuen Frontend und einem neuen Backend. Soweit schon recht gut, aber noch nicht spannend genug. Es kommt noch besser.

Zum einen wird das neue Frontend die bisherigen Sprachkonstrukte unterstützten sowie Raum für neue, innovative offen lassen. Das Backend hingegen soll ein gemeinsames für Delphi und C++ werden. Somit wären die Zwischendateien sowohl von Delphi als auch C++ gleichermaßen les- und verarbeitbar.

Das lässt nun Spielraum für Spekulationen. Beim Lesen des Artikels musste ich unwillkürlich an die .NET Plattform denken, bei der Code jeder .NET-Sprache miteinander gemsicht werden kann. So wie es sich liest, wird das auch mit dem neuen CodeGear-Compiler möglich sein.

Ob das der Fall sein wird, werden wir spätestens Mitte 2009 sehen. Denn dann wird eine erste Vorabversion des neuen Compilers veröffentlicht. Die finale Version kommt dann Mitte 2010. Ich für meinen Fall bin gespannt und würde es durchaus begrüßen, wenn Delphi- und C++-Code gemischt werden könnte. Oder macht das überhaupt keinen Sinn? Dank der geplanten neuen Funktionen im Delphi- und C++-Frontend?

Delphi 2009 im Netz

5 November 2008

Die Produkteinführung von Delphi 2009 war begleitet von einer Vielzahl an Blogbeiträgen, Sneak Previews, Webinaren und Artikeln zu den neuen Funktionen und zur neuen IDE. Aus meiner Sicht ein voller Erfolg. Pawel Glowacki hat eine sehr ausführliche Liste aller Online-Ressourcen zu Delphi 2009 aufgestellt. Ein beachtliches Sammelsurium.

Details zu Delphi Prism

25 Oktober 2008

Wie Robert zu berichten weiß, hat Nick Hodges, seines Zeichens Delphi Produktmanager, erste Details zu Delphi Prism veröffentlicht. So wird das Delphi für .NET das Framework 3.5 komplett unterstützen. Das wird erreicht, indem das Produkt als Plugin für die Visual Studio Shell entwickelt wurde. Trotzdem ist es ein eigenständiges Produkt und stellt den .NET-Teil vom RAD Studio 2009. Achja: und erscheinen soll es noch vor Jahresende.

Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Deutschland
This work by Andreas Richter is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Deutschland.