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.
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.
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ý.
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.
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ě).
// minimální varianta
uses
SysUtils,
RegularExpressions;
begin
if TRegEx.IsMatch(paramstr(1), paramstr(2)) then
Writeln('Text odpovídá regulárnímu výrazu')
else
Writeln('Text neodpovídá regulárnímu výrazu');
end.
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ší.