Delphi XE - první dojmy

vložil Radek Červinka 12. září 2010 21:47

První dojmy z instalace a používání Delphi XE (pro jistotu naposledy: nové označení pro Delphi 2011) a jak to vypadá ohledně populárních komponent a rozšíření.

Instalace

Požadavky na IDE:

  • nejméně Windows XP SP 3, Server 2003 (SP1) nebo 2008, Vista (32 nebo 64bit), Windows 7 (32 nebo 64)
  • pro instalaci IDE je nutný .NET Framework 2.0 SP1 (používá se pro refaktoring v IDE)
  • procesor 1.4GHz a lepší

Požadavky pro běh programů:

  • nejméně Windows 2000 (asi SP 4), pokud budete používat některé specifické komponenty vyšších verzí Windows tak to nebude pravda (pokud je Delphi neemuluje pro starší systémy podobně jako v případě dotykového ovládání)

Předchozí verze:

  • při koupi XE dostáváte možnost získat předchozí verze zdarma, na adrese www.embarcadero.com/xe-earlier-versions zadáte do 180 dní Vaše sériové číslo a můžete získat Delphi 7, 2007, 2009 nebo 2010, v případě upgrade jen ty verze, ze kterých neupgradujete. Velmi dobrý krok.

Už klasicky po několikátou verzi je instalace přes web, tj. stáhnete web instalátor (36M) a zbytek se stahuje podle vaší edice a vybraných komponent (včetně helpu cca 400M, pro zájemce je dostupné ISO). Ale instalační ISO mi přijde zbytečné, jelikož všechny soubory jsou stažené do určeného místa a pak je můžete použít jinde.

Delphi XE

Delphi XE

Delphi XE

Delphi XE

Po základní instalaci se automaticky spouští instalace AQTime standard 7, CodeSite Express 4.6.1 a Rave Report 9. Dále CollabNet Subversion (jako externí program, IDE ho podle mne nepoužívá), FinalBuilder (ne v Professional). Poté nezapomeňte instalovat help (já instaloval bez MS SDK), viz startovní menu.

Delphi XE

Instalace help byla opravdu rychlá a u helpu bylo příjemné překvapení.

Vylepšený help

Help od dob integrace MS Document Explorer byla bolístka nových verzí. S každou novou verzí se sice help vylepšoval, ale pořad to nebylo košer (viz můj nedávný článek jak to obejít). Nyní ale autoři těžce zapracovali a výsledek je znát. Nejenže se zlepšil index (tj. prakticky každá funkce je nyní dostupná), ale hlavně se zlepšila rychlost. Po startu Delphi je sice první dotaz trošku pomalejší (ale ne zas moc), zato každý další dotaz (i když help uzavřete) je prakticky okamžitý.

Delphi XE

Navíc jak je vidět přibyla vpravo nahoře možnost filtrování (jen pro aktuální stránku, resp. nenašel jsem jinou možnost), které ovládá viditelnost specifických částí dle jazyka.

Drobný leak: v helpu ms-help://embarcadero.rs_xe/vcl/SysUtils.Beep.html

Note: On Linux and Macintosh, to minimize library dependencies in the runtime library, the SysUtils version of Beep has limited Linux and Macintosh functionality. For cross-platform GUI applications, use the UControls version of Beep instead.

Změny na první pohled

Obecně se XE podobá verzi 2010, zajímavým změnám se budu věnovat někdy později, ale aspoň telegraficky o tom co jsem ještě nepsal minule.

IDE:

  • menu File - Open From Version Control
  • menu Edit - integrován Beyond compare
  • menu View - AQTime
  • menu Run - Run without Debugging
  • nové menu AQTime

Databáze BlackfishSQL už se nedodává. Škoda, ale její licenční politika byla hodně krutá. Pro lokální DB bych použil SQLite nebo embedded firebird.

Rozdíl mezi debug verzí a release: podle mne poprvé je po instalaci rozdíl mezi konfiguracemi, kdy debug verze má zapnuté Stack frames, vypnutou optimalizaci a release verze vypnuté Local symbols, Debug information.

Delphi XE Options

Regulární výrazy

V jednotce RegularExpressions, postaveno na PCRE pro Delphi, jedná se o několik rozšířených recordů (opravdu mám toto rozšíření jazyka rád - tady jsem je celkem popisoval - Delphi a rozšířený record a většina nových věcí je implementována právě přes ně).

    1// minimální varianta
    2uses
    3  SysUtils,
    4  RegularExpressions;
    5
    6begin
    7if TRegEx.IsMatch(paramstr(1), paramstr(2)) then
    8    Writeln('Text odpovídá regulárnímu výrazu')
    9  else
   10    Writeln('Text neodpovídá regulárnímu výrazu');
   11end.

RTL a VCL

RTLVersion = 22.00; definováno VER220

Další známé symboly pro podmíněnou kompilaci: CPUX64, MACOS (dříve MACOSX), POSIX, LINUX.

V System.pas a SysUtils.pas jsou mraky interních změn (resp. rozšíření pomocí IFDEF, kdy se ale změna Windows větve netýká) k vůli multiplatformnosti a 64bitům. Ale zaujalo mne např.

function SplitString(const S, Delimiters: string): TStringDynArray;

nebo v jednotce Math je u původních verzí funkcí s parametrem extended vždy přidána inline varianta pro single a double, což v důsledku má eliminovat zbytečné konverze a tedy výrazně zvýšit rychlost těchto funkcí při častém volání. Je to další z optimalizací, které jsou v každé verzi lepší.

function Cot(const X: Single): Single; inline; overload;     { alias for Cotan }
function Cot(const X: Double): Double; inline; overload;
function Cot(const X: Extended): Extended; inline; overload;

TStrings nyní mají volitelně podporu zápisu BOM (na začátek souboru), podporu kódování (property DefaultEncoding: TEncoding, property Encoding: TEncoding) a dvě užitečné metody( function ToStringArray: TArray<string>; function ToObjectArray: TArray<TObject>;).

TThread byl rozšířen o

  • class procedure SetReturnValue(Value: Integer); static;
  • class function CheckTerminated: Boolean; static;
  • class function CreateAnonymousThread(const ThreadProc: TProc): TThread; static; (velmi zajímavé)
  • class procedure Sleep(Timeout: Integer); static;
  • class procedure Yield; static;
  • class property ProcessorCount: Integer
  • class property IsSingleProcessor: Boolean

Změny ohledně formátování data a času

V podstatě všechno jako CurrencyFormat, ThousandSeparator, DateSeparator … je označeno jako deprecated a má se to nahradit za např. FormatSettings.CurrencyString. TFormatSettings je nový rozšířený record (opět!), který je konstruován, aby byl bezpečný z hlediska vláken. Mimochodem je vtipně implementován jako absolute na ty deprecated položky, tj. zatím se dají oba přístupy kombinovat bez ztráty kytičky.

Každá z formátovacích rutin má nyní jako overload další rutinu, která má možnosti specifikovat parametr TFormatSettings.

Zpracování zpráv TApplication.ProcessMessage

V některé z předchozích verzí (asi 2010) se změnilo zpracování zpráv tak, že nejdříve byly obslouženy zprávy ohledně myši (podle mne souviselo z gesty), což mělo spíše negativní důsledky, takže se to v XE už nedělá.

Stav oblíbených nástrojů a komponent

Verze JCL a JVCL pro XE jsou dostupné, pokud ne na oficiálních webech tak určitě na Partner DVD (viz odkaz).

Virtual TreeView je podporován nejméně v SVN, ostatní komponenty nevím, ale neměl by to být obecně problém u komponent, které jsou pro Delphi 2009+.

Ohledně nástrojů: přestože se obecně tvrdí, že Delphi XE je opravdu dobrá verze, i tak Andy Hausladen něco na vylepšení ještě našel a tak byl aktualizován pro Delphi XE i IDE FixPack a zde je popis IDE FixPack z dřívějška.

Verze CnPack je dostupná, pokud ne na oficiálních webech tak určitě na Partner DVD (viz odkaz), mimochodem CnPack (pro mne, a nejen pro mne, nutnost) jsem také popisoval.

Shrnutí

Jednalo se o první pohled a určitě se k některým věcem ještě vrátím. Přesto malé shrnutí.

Už o Delphi 2010 jsem si myslel, že se jedná o nejlepší verzi Delphi (i když např. help mne nevýslovně štval) a Delphi XE zvedá laťku ještě výše. Kromě oprav chyb je patrné zrychlení (a to se po service packu určitě ještě zlepší) a integrace užitečných nástrojů spolu s dostupností předchozích verzí je jednoznačně krok vpřed.

Proti předchozím třem verzím je novinek o trochu menší počet (důvod jsem zde již psal, jde ale vidět, že opravdu se pracuje na tom co slibují), ale o to větší důraz byl kladen na opravy chyb (seznam oprav QC a rozšíření je impozantní).

Ještě mne tak napadá, že XE je možná v podobné situaci jako Delphi 7. Delphi 7 přineslo proti verzi 6 v malé změny a přesto se jednalo o velmi populární verzi. Jen ta budoucnost je teď mnohem nadějnější.


Nabízíme Delphi školení na různá témata, primárně ve Vaší firmě.

Tagy:

Delphi

Komentáře

13.9.2010 8:15:20 #

pepak

Píšete: "jedná se o několik rozšířených recordů (opravdu mám toto rozšíření jazyka rád...)". Zajímalo by mě, PROČ je máte rád. Víceméně mě napadá jen jediná věc, ve které jsou lepší (možná v uvozovkách) než klasické třídy, a to je jednodušší vytvoření a zrušení instance (stačí nadeklarovat - ovšem i to jen s výhradou, protože většinu těch záznamů stejně budu potřebovat nějak inicializovat, a to už mi přijde celkem jedno, jestli to dělám pomocí Třída.Create nebo Záznam.Init). a to konec konců můžu zařídit pomocí object místo class. Pak ještě možná předávání hodnotou, i když pro to vidím spíš výhody než nevýhody. Jakou výhodu rozšířených recordů přehlížím?

pepak

13.9.2010 10:15:33 #

radekc

Kromě uvedeného vytvoření a rušení instance i to, že častokrát kdy je record použit se jedná o lokální proměnnou (např. TStopWatch, záznamy z IOUtils atd.). V takovém případě se její "instance" vytváří na zásobníků (nebo si to aspoň myslím) jako všechny další lokální proměnné, což je podle mne výrazně rychlejší než alokace a dealokace (opět jsem to neměřil, ale z principu práce by to mělo být tak jak říkám). Navíc mi to přijde takové patřičné - record obsahuje data a sem tam s nimi je dobré nějak pracovat.

To ale neznamená, že bych za každou cenu teď používal jen record. Použití tříd má taky své pro a nerad bych někomu něco nutil.

Ale nějaký důvod to určitě mělo, jinak by všechny nové "helper" funkce nebyly implementovány takto a podle mne se jedná o to s tím zásobníkem.

radekc

13.9.2010 10:40:10 #

pepak

No, já jsem si teď ještě ve starých Delphi 5 zkusil, jak by se to chovalo s objectem, a podle mě to přesně odpovídá tomu, co popisujete u toho rozšířeného recordu: vytvoření i zrušení instance proběhne automaticky a) globální proměnná: normálně v datovém segmentu aplikace (je to vidět v .MAP souboru); b) lokální proměnná: na stacku. Když pak ten object předám jako parametr nějaké proceduře, tak se sice předá jen pointer na object, ale hned první, co procedura udělá, je, že vytvoří na stacku potřebný prostor a obsah toho objectu do něj překopíruje, tzn. proti klasickému předání hodnotou je rozdíl jen v pořadí položek na stacku a v tom, kdo je vytváří (volající vs. volaný).

Prostě mi to podle popisu přijde, že se rozšířený record chová takřka stejně jako object, který máme v Turbo Pascalu už od verze 5 nebo kolik. Chápu, že se někomu může líbit sám o sobě (taky mám své oblíbené konstrukce), ale snažím se dopátrat toho, co vlastně přináší, co bychom tu neměli už dřív. Protože používat to jenom proto, že to jde, nechci - mimo jiné proto, že to (zbytečně?) odřízne spoustu starších verzí Delphi.

{$apptype console}

type
  TNeco = object
    a, b, c: integer;
    end;

procedure WriteNeco(Neco: TNeco);
begin
  Writeln(Neco.a);
  Writeln(Neco.b);
  Writeln(Neco.c);
end;

procedure NecoLocal;
var Neco: TNeco;
begin
  Neco.a := 4;
  Neco.b := 5;
  Neco.c := 6;
  WriteNeco(Neco);
end;

var Neco: TNeco;

begin
  Neco.a := 1;
  Neco.b := 2;
  Neco.c := 3;
  WriteNeco(Neco);
  NecoLocal;
end.

pepak

13.9.2010 11:04:30 #

radekc

Asi máte pravdu, ale už jsem viděl několik zdrojáků kde byla konstrukce
type
{$IFDEF xxx}
  TNeco = record
{$ELSE}
  TNeco = object
{$ENDIF}
    a, b, c: integer;
    end;

kde xx byla cislo verze, ale to jen tak na okraj. Jen by mne zajímalo, kolik lidí zná konstrukci s object (když už nejméně od verze 2 je to nedoporučované). Ale uznávám, že to tak jde taky. Díky za upřesnění.

radekc

17.8.2011 1:55:41 #

Jbagy

Dobty den.
Chcem sa opytat ci v Delphi XE ide vytvarat oladace .sys pre OS MS Windows

Jbagy

17.8.2011 9:26:47 #

Radekc

Není to cílem Delphi. Ale pokud opravdu moc chcete tak existuje knihovna, která tomu pomůže - ale obecně to není podporováno.

Radekc

22.8.2011 14:48:55 #

Vl.Turek

Dobrý den,
chtěl bych se zeptat, jak je to s dostunými verzemi Delphi XE a jejich možností připojení k DB, Uvažujeme o koupi Delphi Profesional, ale potřebuji v aplikacích spolupracovat s MS SQL (přikonektovat db, vytvářet datasety, DBgridy a podobně). V popisů verzí jsem se dočetl, že Profesionál snad MS SQL nepodporuje. Je to opravdu tak ?
Děkuji.

Vl.Turek

22.8.2011 14:53:53 #

Radekc

K MS SQL přes ADO (neboli DB GO) by neměl být problém, resp. v každé verzi Professional bylo ADO, ale Delphi XE mám ve vyšší verzi. Pochybuji, že by se to změnilo - takže na 99% by neměl být problém.

DB Express ale ne. Ale nejsem prodejce - kontaktuje embt.cz

Radekc

22.8.2011 15:07:04 #

Vl.Turek


Díky,
to ADO by mi mělo stačit. Jen mě děsilo, že s Profesional verzí se na MS SQL nedostanu. Enterprise už jsou zbytečně drahé a naopak Profesional jen MySQL a Interbase by mi přišla jako verze úplně k ničemu. Zkoušel jsem prodejce na sw.centrum.cz, ale ti mi odpověděli, že databázová serverová propojitelnost s databázovými systémy  Microsoft SQL Server, je možná až u verze Delphi XE Enterprise.

Vl.Turek

Komentování ukončeno

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa

Poslední komentáře

Comment RSS