dinsdag 16 december 2008

Delphi Prism: XNA, LINQ, .Net CF en meer!

Aangezien Delphi Prism een volledige .Net taal is, ondersteunt het zonder problemen het MS XNA Framework (voor oa game ontwikkeling).
Voor een demo van de "XNA Tutorial 1" in Delphi Prism:
http://blogs.codegear.com/pawelglowacki/2008/12/11/38629

Verder ondersteunt Delphi Prism gewoon LINQ.
Voor een demo van "LINQ to Objects":
http://www.monien.net/blog/index.php/2008/12/delphi-can-do-linq/
En een demo van "LINQ to SQL":
http://www.monien.net/blog/index.php/2008/12/delphi-can-even-linq-to-sql/

En met een paar kleine aanpassingen kun je Delphi Prism ook gewoon gebruiken met het .Net Compact Framework (video):
http://cc.codegear.com/Item/26379

CodeGear heeft ook een handig overzicht gemaakt van Delphi Prism gemaakt, waarbij de belangrijkste features uitlegd worden:
"Delphi Prism Reviewers Guide"
http://dn.codegear.com/article/39113

Met Delphi Prism is Delphi weer helemaal terug, en vooral "Cross Platform":
http://www.infoq.com/news/2008/11/Delphi-Prism

Naast de "Class Completion" die de Delphi ontwikkelaars goed kennen, heeft Prism nu ook "Variable Completion" en "Method Completion":
http://prismwiki.codegear.com/en/Variable_Completion
http://prismwiki.codegear.com/en/Method_completion

Ook "Sync Editing" is een handige extra feature:
http://prismwiki.codegear.com/en/Sync_Editing
http://www.monien.net/blog/index.php/2008/12/enable-sync-editing-in-delphi-prism/

Trouwens, de wiki help van Delphi Prism ondersteunt ook RSS feeds (te zien aan het oranje feeds symbool in Firefox).
Dan kun je makkelijk zien wat er gewijzigd is, als er iets verandert:
http://prismwiki.codegear.com/en-w/index.php?title=Special:RecentChanges&feed=rss

maandag 15 december 2008

Delphi Object Repository gebruiken

Bij mijn huidige klant moest ik even uitzoeken hoe de "Object Repository" van Delphi gebruikt kan worden, zodat bepaalde framework templates (forms, frames, datamodules, maar ook complete template projecten) door de ontwikkelaars gebruikt kunnen worden. Ik kon voor Delphi 2007 op internet niet direct iets vinden hoe dit nou werkt en hoe je dit in kunt stellen (wel voor oudere versies). In de CodeGear Help stond gelukkig wel het een en ander (trouwens, niet via de "help" knoppen in Delphi zelf, daar heb je niks aan).

Shared Repository instellen

Als eerste maak je een bepaalde map aan, bijvoorbeeld "P:\Lib\Repository". Dit kan een gesharede netwerk map zijn, maar kan ook een lokale map zijn die je via een versie beheer systeem beheert. Vervolgens moet in Delphi de eerder gemaakte map als “Shared Repository” ingesteld worden:
Delphi 2007 Tools Options:













Delphi 2007 verwacht het bestand “BorlandStudioRepository.xml” in deze directory. Dit XML bestand bevat de items die Delphi kan gebruiken uit de repository. Dit bestand is overigens zelf eenvoudig aan te passen (namen, bestanden, etc). Delphi maakt dit bestand zelf niet aan, maar verwacht wel dit bestand (anders werkt het niet!). Het beste is om het huidige bestand te gebruiken: deze staat in de map "C:\Documents and Settings\\Application Data\Borland\BDS\5.0\". Kopieer deze in de eerder gemaakt directory, en start Delphi opnieuw op (!).

Repository gebruiken

De items die in de repository staan, kunnen gebruikt worden via:
Delphi → File → New → Other:











Het volgende scherm wordt dan getoond:

Selecteer een item en "Inherit" en druk op “OK”.

Items toevoegen aan de repository

Er kunnen 2 soorten items aan de repository toegevoegd worden: losse items (forms, frames, datamodules) en complete projecten.

Project toevoegen

Een project kan aan de repository toegevoegd worden via:
Delphi → Project → Add to repository:
























Los item toevoegen

Een los item kan aan de repository toegevoegd worden, door in de “Form manager” (form, frame of datamodule) met de rechtermuisknop te klikken, en dan “Add to Repository”:












Repository beheren

Items in de repository kunnen bewerkt of verwijderd worden via:
Delphi Tools Repository












Alleen items kunnen bewerkt worden, de categorieën zelf niet (hiervoor moet je “BorlandStudioRepository.xml” zelf aanpassen).

donderdag 11 december 2008

Random things & tips #2

Even weer een "dump" van mijn bezigheden, ontdekkingen en ervaringen tijdens het programmeren :-)
  • TThread.Queue (asynchroon!)
    Sinds Delphi 2007 (?) kun in plaats van "Synchronize" ook de "Queue" functie gebruiken. Nadeel van "Synchronize" is dat de huidige thread geblokkeerd wordt totdat de main thread de functie uitgevoerd heeft (synchroon). Met "Queue" kun je asynchroon de functie laten uitvoeren in de main thread! (de huidige thread gaat dus gewoon door).
  • TryStrToInt, StrToIntDef
    Vaak kom ik de volgende code tegen:
    try
    i := StrToInt( s );
    except
    i := 0;
    end;
    Beter is om TryStrToInt of StrToIntDef te gebruiken!
  • "Pretty Print" XML (netjes inspringen etc)
    Dit kan eenvoudig met de functie "FormatXMLData" uit de unit "XMLDoc".

  • Delphi uitbreidingen en unsupported fixes:
    http://andy.jgknet.de/blog/
    - DDevExtensions 1.9.2 (handige plugin!)
    - DelphiSpeedUp 2.78 (sneller opstarten)
    - IDE Fix Pack 2007 2.1 (IDE bugfixes)
    - VCL Fix Pack 1.0 (VCL runtime fixes)
  • Stomme laptop "Fn" toets zit vast!
    Dit bleek een "numlock" functie te zijn van mijn Acer Aspire: Fn + F11 om aan/uit te zetten
  • ModelMaker tutorials
    Voor diegene die nog nooit ModelMaker gebruikt heeft:
    http://www.thoughtsmithy.com/mmjump/MMGettingStarted_Intro.html
    ModelMaker is echt een hele mooi en goede tool voor ontwikkeling (UML diagrammen, eenvoudig en snel classes en properties maken, etc), maar ook voor documentatie: UML diagrammen genereren van de classes van je code!
  • Tip: Low prio programma starten
    Om een programma in een batch bestand (of gewoon command line) met lage prio uit te voeren, kan het "start" commando gebruikt worden. Bijvoorbeeld: 7zip in batch bestand, low prio, 1 voor 1, geminimaliseerd:
    start /LOW /WAIT /MIN C:\7za\7za.exe a -tzip -mx9 files.7z *.txt

dinsdag 9 december 2008

Delphi Prism beschikbaar!

Delphi Prism is de nieuwste Delphi .Net versie. Het is echter een geheel andere versie dan vorige Delphi .Net versies: het is een soort plug-in in de Visual Studio Shell. Hierover zijn de meningen nogal verdeeld, vooral omdat het geen echte nieuwe Delphi .Net "versie" is maar een geheel nieuw en ander product. Anderzijds is het nu een volledige up-to-date .Net taal, met volledige ondersteuning voor de allerlaatste .Net technieken (LINQ, WPF, WCF, etc). Het heeft ALLE features van C#, PLUS extra handige uitbreidingen! Voor een vergelijking
met C#: http://prismwiki.codegear.com/en/Delphi_Prism_vs._CSharp


Vooral deze extra uitbreidingen maken Delphi Prism interessant. Zo kan nu heel gemakkelijk een blok code of functie asynchroon c.q. parallel uitgevoerd worden via "async
" blokken en "future" variabelen. Dit is veel makkelijker dat dan met C# en Parallel Framework! Verder kan makkelijker met "nullable types" en nil objecten gewerkt worden. "Locked" properties, "Property Notification","Exception filters" etc etc, allemaal handige verbeteringen voor programmeurs.
Nog een voordeel ten opzicht van standaard Visual Studio, is de support voor Linux en Mac OS X
, door middel van Mono.
En ja, de Wiki van Delphi Prism is erg interessant: http://prismwiki.codegear.com
.

Wat dat betreft biedt Delphi Prism veel meer .Net mogelijkheden dan de vorige Delphi .Net versies. Borland heeft wel geprobeerd om te concurreren met Microsoft, ook met C# Builder, maar dit was een bijna onmogelijk taak. Vooral omdat met .Net de ontwikkelomgeving heel nauw samenwerkt met het framework. Zoals de designers voor Winforms en WPF, ondersteuning voor LINQ, Parallel Framework, etc. De ontwikkelingen gingen zo snel, en Borland moest steeds het wiel opnieuw uitvinden c.q. implementeren, zodat het altijd een stuk achter zou lopen. Vandaar: "If you can't beat them, join them". Door de Visual Studio Shell te gebruiken, hoeft men niet meer alles zelf te maken, maar kan direct gebruik gemaakt worden van de aanwezige designers en technieken.

De taal Delphi zelf is wel wat veranderd en uitgebreid. Het sluit nu beter met .Net aan. De reden hiervoor is dat de Win32 en .Net ontwikkelingen steeds meer uiteen lopen. Als men de beide Delphi's zou proberen compatibel te houden met elkaar, zou dat alleen maar vertragen en hinderen. Nu kunnen beide versies ontwikkeld en geoptimaliseerd worden voor hun eigen doelgebieden. Marc Hoffman licht dit ook toe in een interview:
http://www.bitwisemag.com/2/Delphi-Prism-Visual-Studio-Pascal


Als Delphi ontwikkelaar vind ik de VS Shell enerzijds wel jammer, ik had ook liever een echte Delphi IDE gehad ipv VS Shell. Ook het missen van de VCL is jammer. Aan de andere kant is de VCL voor .Net overbodig geworden door WinForms en al helemaal met WPF. De situatie is nu anders dan destijds met Windows 3.11 tot Windows XP. Trouwens, de volgende Visual Studio wordt helemaal WPF based:
http://blogs.msdn.com/ricom/archive/2008/11/18/the-visual-studio-tech-roadmap-starring-visual-studio-2010.aspx

Dus de volgende versie van Delphi Prism kan hiervan gelijk profiteren!

Bestaande Delphi projecten kunnen dus niet 1 op 1 in Delphi Prism geopend worden. Wel zijn ze bezig met een tool die het converteren makkelijker moet maken, namelijk Oxidizer:
http://prismwiki.codegear.com/en/Oxidizer

Ook een Delphi compatible RTL is in ontwikkeling, ShineOn:
http://prismwiki.codegear.com/en/ShineOn

Trouwens, C++ en VB programmeurs moeten een veel grotere omslag maken, die moeten helemaal "opnieuw" beginnen.

Hoewel het voor bestaande Delphi.Net gebruikers jammer is voor deze omslag, heb ik in deze stap van CodeGear meer vertrouwen. Nu kan men zich volledig richten op extra features en uitbreidingen, gericht op de ontwikkelaars.En deze lijst is met verbeteringen is groot:
http://prismwiki.codegear.com/en/Delphi_Prism_Syntax_compared_with_Win32_Delphi


Delphi is onder CodeGear weer sterk bezig met grote opmars. Met Prism is het weer modern en klaar voor de toekomst!

Delphi Prism kan als .iso gedownload worden:
http://cc.codegear.com/free/radstudio

ftp://ftpd.codegear.com/download/RADStudio2009/DelphiPrismISO.iso