phpRS            

Dnešní datum: 10. 09. 2010   | Hlavní stránka | Seznam rubrik | Kniha návštěv |  
  Hlavní menu
Hlavní stránka
Seznam rubrik
Fotogalerie
Kniha návštěv
Stáhněte si
Odkazy
Ankety
TOP 15

  Reklama


  Rubriky

  Poslouchám na síti


Spusť přehrávač


Spusť přehrávač


  Informace o webu
Všehochuť aneb od každého trochu

Content © 1991-2010 Slávek Rydval

View Slávek Rydval's profile on LinkedIn

Vytvořeno pomocí phpRS a Texy!

RSS kanál

Software

* Borland Delphi 6 Enterprise

Vydáno dne 03. 08. 2005 (6391 přečtení)

Opravdový pamětník vývoje Delphi si jistě vybaví problémy se sudými verzemi tohoto nástroje. Při testování šesté verze vše ovšem nasvědčuje tomu, že Borland tomuto prokletí neunikl. Ale nepředbíhejme.

Dodávka a instalace

Delphi 6 se podobně jako předchozí verze dodává ve třech baleních: Standard, Professional a Enterprise přičemž na recenzi jsem měl k dispozici poslední uvedené. Kromě vlastního CD s produktem je zde Companion Tools CD s dalšími komponentami, nástroji a informacemi od třetích stran. Oproti Delphi 5 zde nejsou CD ostatních produktů společnosti Borland. Že by se to neosvědčilo? Posledními obyvateli krabice jsou tři knihy (Quick Start, Language Guide a Developer's Guide) a hierarchický strom komponent Delphi i Kylixu (resp. VCL a CLX). Také je důležité zmínit, že naštěstí nestačilo dojít k naprostému nesmyslu chránění CD proti kopírování. Piráti si vždy cestu najdou (dříve či ještě dříve) a platící uživatel nemá možnost udělat si záložní kopii, na kterou má právo.

Instalace pomocí Windows Installeru je bezproblémová, navíc s výraznou novinkou. Již není potřeba pro každého uživatele jednoho PC provádět znovu a znovu instalaci (byť pouze zápisem do registrů) jak bylo nutné u předchozí verze, ale Delphi vše zařídí při prvním spuštění v novém profilu za vás. Smutná je ovšem skutečnost, že produkt nepochopí cestu, kam má produkt nainstalovat a sebere si i pár megabajtů ze systémového disku, což je krajně nevychované a v dnešní době bych si to dovolil považovat dokonce za vulgární. Aplikační specifikace pro Windows 2000 je zřejmě pro vývojáře komediálním cárem elektronického smetí (to ovšem neplatí jen pro Borland).

Novinky v prostředí, nové komponenty

Object InspectorZřejmě první, čeho si všimnete, je Inspektor objektů. Pokud jste pracovali s dřívější verzí, pak víte, že například zobrazení dat z databáze v datové mřížce znamenalo vždy nastavit jednu vlastnost typu objekt (zdroj dat, tomu zase množinu a množině SQL dotaz a připojení a …). To znamenalo neustálé přepínání mezi komponentami, které bylo o to horší, pokud jste je měli rozmístěné po různých datových modulech. Tomu je konec. Vše lze nastavit rychleji díky možnosti rozbalit si vlastnosti přiřazené komponenty. Na obrázku Obrázek 2 vidíte přes komponentu TDBGrid možnost nastavit ConnectionString právě přes TDataSource, TADODatSet a konečně TADOConnection. Podobně jako u vlastností můžete takto zadávat události.

Na uvedeném obrázku lze také vidět rozbalený seznam komponent na formuláři: nově je uváděn typ u všech komponent, nikoliv jako dosud pouze u vybrané.

Ale pojďme dál. Na řadě je paleta komponent. V novém vydání přibylo větší množství komponent a nových vlastností u stávajících. Uvedu zatím pouze některé, neboť ostatní si zaslouží popis uvedený dále v textu. Záložka Additional obsahuje oproti předchozí verzi komponentu pro výběr barev (TColorBox), pro zadávání textových hodnot v mřížce (TValueListEditor), nebo výborné spojení vstupní řádky a popisky do jedné komponenty (TLabeledEdit), ale hlavně nový manažer pro centralizaci akcí. Kromě přidání dalších standardních akcí např. pro formátování textu, ukládání souborů a další lze velmi jednoduše pomocí myši přetahovat akce do „akčního menu“ (nová komponenta) či plovoucích nabídek. K tomu všemu je přidán konfigurační dialog, který lze volat přímo z aplikací a uživatel si může celé menu včetně nabídek upravit podle sebe. Vše se pak můžete pomocí jedné metody uložit do souboru či zpětně načíst. To ale není vše. Toto nové menu si například pamatuje četnost používání příkazů a ty používanější dává více nahoru a opačně případně je schovává podobně jako Office (osobně si ale myslím, že toto je cesta do pekel).

Na chvíli se ještě zastavím u komponenty TValueListEditor (implementaci lze již delší dobu vidět v menu Project, položka Options, záložka Version Info). Představte si, že necháte uživatele editovat jak hodnoty, tak klíče a ještě mu umožníte přidávat či odebírat jednotlivé řádky, což je zcela běžná věc. Navíc potřebujete, aby klíč byla jednoznačná hodnota. A teď přijde tragédie v ještě horší podobě než kterou předvedl Will v Romeovi a Julii. Pokud uživatel omylem zadá klíč, který již existuje, pak NELZE OBSLOUŽIT UDÁLOST TYPU OnKeyViolation, ALE DOJDE K VYVOLÁNÍ VÝJIMKY. Ať se na mě nikdo nezlobí, ale tohle je prasárna. Strávil jsem celé odpoledne a kus večera hloubáním na tím, jak to ošetřit, ale kromě napsání vlastní komponenty (resp. úpravy v dodaném zdrojovém souboru) jsem nenašel rozumnější cestu. Za zmínku jistě stojí také obsluhy událostí OnValidate (která navíc není volána vždy, když by měla) a OnSetEditText. Normálně uvažující vývojář by v případě špatného textu potřeboval tento změnit. Ale Borland né. Předává to jako konstantní hodnoty a programátore, snaž se.

Problémem předchozích verzí byla absence komponent pro procházení adresářů a souborů na disku (nepoužitelné, uživatelsky odpudivé a hlavně zastaralé komponenty ze záložky Win 3.1 nelze počítat). V Delphi 6 již k tomu komponenty jsou a pomocí nich lze během pár kliknutí naprogramovat svého vlastního Průzkumníka. Ovšem při jejich použití jsem narazil na neomluvitelný problém: pokud chcete při změnách na disku automaticky tyto změny promítat do zobrazení (nastavení vlastnosti AutoRefresh na True), pak komponenty vytvářejí na každém adresáři, který označíte, vlákno, které na konci není uvolněno, takže můžete mít přes sto šedesát vláken, což dokonce vede k pádu aplikace při jejím ukončování (někdy i dříve). Chce se mi z toho brečet. Nepochopitelné je i umístění těchto komponent na záložce Samples. Důvod vidím pouze v tom, že se již nikomu nechtělo psát k tomu nápovědu. Podobně rozšířené standardní komponenty jsou totiž například i již zmíněné TValueListEditor či TColorBox. K těm nápověda je, proto jsou umístěny na „hodnotnějších“ záložkách.

Pro vytváření internetových aplikací je ve verzích Professional a Enterprise obsažen balík komponent Indy (sada komponent FastNet zůstala). Můžete tak vytvářet internetové servery či klienty. Ne že by to dříve nešlo, ale tímto máte k dispozici jednu „z dalších možností“, která je v současnosti zřejmě nejoblíbenější. Pozor ovšem na některé nectnosti, které mohou vyplynout z přenosu mezi platformami: portace těchto komponent na Linuxu není zcela „košér“.

Změny v komponentách a prostředí

Code InsighV krátkosti si ukažme změny v komponentách známých i v dřívějších verzích (samozřejmě nelze popsat všechny). TComboBox má nově vlastnost AutoComplete. V TMemo již vlastnost Caret není pouze pro čtení, ale i pro zápis. TAction lze přiřadit libovolné množství horkých kláves, takže již není potřeba jako dříve vytvářet kvůli další horké klávese novou akci. Formulář má nově kromě samovypovídající vlastnosti AutoSize další, které umožňují definovat transparentní barvu a/nebo míru průhlednosti. Nepochopil jsem, proč takovou specialitu, která se použije párkrát za život, musí být vecpány sem. Zbytečně to zvětšuje výsledný kód. Když už jsme u toho, tak databázová aplikace (používá se IBExpress) přeložená v Delphi 5 mající cca 2 MB, v Delphi 6 již měla o cca 220 kB více.

DiagramTLabel byl obohacen o události OnMouseEnter a OnMouseLeave. Proč to má jenom TLabel, je opět nad moje chápání. Tyto události jsou občas potřeba i v jiných komponentách (narozdíl např. od průhlednosti). Vlastnost PopupPoint vyskakovací menu byl ze sekce protected přesunuta do sekce public, takže je přístupný všem.

Další zastávka bude u ostatních částí uživatelského prostředí. Co jsem nikdy nepochopil bylo standardně nezaškrtnuté políčko Undo After Save v nastavení editoru. Nepochopení trvá dále. Automatický doplňovač kódu se opět přiblížil ke stavu použitelnosti. Jednak jeho aktivace může nastat již po 0.1 vteřině (konečně!) a jednak do tohoto nástroje pronikly barvičky. Vlastnosti oddělené od metod a pod. krásně doplňuje to, že se seznam možných doplnitelných věci filtruje v závislosti na tom, co je již napsáno (např. máte-li již napsáno „sho“ u formuláře, pak v seznamu zbude již jen to, co vidíte na obrázku Obrázek 1. Pokud se vám zdá toto okno male či velké, můžete jeho velikost upravit podle potřeby. Použít jej lze i v části interface jednotky. Kromě vlastního názvu u metod a funkcí doplňuje i závorky, takže je nemusíte psát sami. Opět mi tu chybí někde si nastavit, aby před otevírací závorku strčil mezeru. Je to snad takový problém? Kompletace kódu ovšem stále nepracuje v některých situacích, kde by to člověk čekal (např. když na nové řádce začínám psát název metody/objektu atd., tak by mohl automaticky naskočit apod.). Snad příště.

Pokud jste pracovali se skupinou projektů, pak po překladu všech se aktivním stal ten projekt, který byl poslední v řadě. Tomu je již také konec a aktivní projekt zůstává ten, který byl aktivním před kompilací.

Novinek doznal i editor. Na přechod zpět po použití „Hot linku“ již lze použít klávesnici. Pořadí otevřených souborů lze pomocí myši upravit tak, aby vyhovoval vašim potřebám.

Při používání jsem se jednou zhrozil, že mi na paletě komponent zmizelo velké množství komponent. Nakonec se ukázalo, že jsou vidět pouze ty, které mají v daném kontextu smysl, tedy například pokud pracujete s datovým modulem, neuvidíte vizuální komponenty. Zda je to dobré či nikoliv ponechám na vás. Já osobně bych uvítal někde toto chování zakázat.

XML Data Binding WizardNově je tu také Object TreeView společně s diagramem. Podobně jako u databázových komponent, kde jde od předchozí verze vytvářet diagramy vztahů mezi komponentami, jde to nyní i pro ostatní komponenty. V okně Object TreeView jsou komponenty uspořádány do stromů závislosti a lze je přetahovat do diagramu. Tam pak lze vytvářet případné další vztahy. Zkusil jsem tak přetáhnout vše, co jsem měl na formuláři (a že toho bylo požehnaně) a čekal, co to udělá. Po cca 100 vteřinách se opravdu vykreslilo to, co mělo, bohužel ale vše pod sebe (ať žije inteligentní layout manager). Dokonce to došlo tak daleko, že v diagramu mající danou maximální výšku jsem se nedostal na všechny prvky, protože byly moc nízko. Navíc mě vadilo, že během zpracování IDE na nic nereagovalo, takže když jsem se omylem pokusil o posunutí prvků, raději jsem nečekal, prostředí odstřelil a spustil jej znovu. Tento diagram je na cvičné použití pro pár komponent ještě použitelný, ale pro větší projekty ani náhodou. Jediná možnost (kterou Delphi umí) je rozdělit si formulář na více takových diagramu, ale než použít berli, raději budu kulhat.

Poslední užitečná novinka, kterou bych rád zmínil, se týká přidávání unit do klauzule uses pomocí klávesové zkratku Alt+F11. To šlo pouze u těch jednotek, které obsahovaly formulář, datový modul apod. Bohužel to nešlo u ostatních jednotek. Tomu už je naštěstí konec, ale pořád je tu jakési nepochopitelné omezení – stále lze takto přidávat pouze jednotky z projektu, takže abyste dodali třeba SysUtils, tak musíte poníženě hledat to správné místo, kam to napsat. Navíc se Borland neobtěžoval opravit chybu, kdy ač jsem v části interface je unita přidána do sekce implementation.

Změny a novinky ve VCL

Díky Kylixu, Delphi to pro Linux, došlo ke změně i v samotné VCL. Kromě přesunům různých typů z jedné knihovny do druhé, byly zavedeny nové funkce a původní prohlášeny za zastaralé (např. místo použití procedury RaiseLastWin32Error je lepší zavolat RaiseLastOSError).

Tato věc s sebou přinesla nové varovné hlášení a direktivy překladače – pokud použijete zastaralou či na operačním systému závislou funkci, typ a pod., jste na to náležitě upozorněni, což je jednoznačně dobře. Ovšem již jsem nedokázal překladači vnutit, že mi je „nějakej“ Linux naprosto ukraden a že tyto hlášení nechci ani vidět. Považuji to za fušeřinu.

Ono vůbec možnost vyvíjet pro Linux, resp. pomocí na platformě nezávislé knihovně CLX, s sebou nese úskalí. Například nápovědu. Pokud něco nevíte a hledáte v ní informace, tak často, ještě než se k danému tématu dostanete, musíte určit, zda jej chcete pro VCL či CLX. Je to neskutečně omezující a zvedá to hladinu adrenalinu v krvi. Proč někde v nastavení není jednoduchá možnost určit tu skutečnost, že v případě volání nápovědy chci pouze tu, která se týká pouze VCL (či pouze CLX)? Navíc v seznamech často chybí údaj, pro kterou knihovnu vlastně téma je. Připadne mi, že Borland je ve stádiu, kdy vlastně neví, co chce: podporovat pouze Linux? Zavrhnout VCL a soustředit se pouze na CLX? Nebo vše nechat na vývojářích, ať se rozhodnou? A nebo jít na houby?

Nápověda 1
 
Nápověda 2
 
Nápověda 3

S novou verzí přišly i nové unity a třídy. Jmenujme alespoň jednotku Math s mnoha matematickými funkcemi či StrUtils pro práci s řetězci. V těchto jednotkách je mj. i přetížená funkce IfThen simulující ternární operátor známý třeba z jazyka C (zajímavě působí skutečnost, že část je deklarována v jedné a část v druhé jednotce). Pomocí ConvUtils lze provádět převody mezi různými měrnými soustavami (v případě, že nevíte, kolik kilogramů má jeden coul, měli byste nikoliv hledat funkci v této jednotce, ale pouvažovat o půjčení si učebnice fyziky pro základní školy). DateUtils zase poskytuje nepřeberné množství funkcí pro práci s datem a časem.

dbExpress

Výraznou novinkou je přístup k databázím. Původní technologie BDE je pomalu ale jistě odstavována a na výsluní se nově vyšvihl dbExpress, což je nativní a na platformě nezávislé připojení k databázi. Ne, že by chtěl Borland dělat konkurenci technologii OLE DB, ale přeci jenom, tuto na Linuxu nenajdete. Důvodem je tedy Kylix. K dispozici jsou (prozatím) připojení na databáze InterBase, MySQL, Oracle a DB2 (pokud někomu chybí MS SQL Server, tak přístup je samozřejmě pomocí OLE DB resp. ADO, které je v Delphi již od páté verze). Při použití dbExpressu není potřeba žádná složitá instalace jako v případě BDE: ovladač se prostě přilinkuje k EXE souboru a je hotovo. Ve svém jádru je dbExpess navržen tak, aby pouze transformoval různé rozhraní databázových klientů na jednotné, které navíc minimalizuje přístup k databázi. Podporuje pouze jednozáznamovou vyrovnávací paměť, záznamy lze procházet jednosměrně (pro obousměrné procházení slouží SQLClientDataSet, který sice také načítá záznamy přes dbExpress, ale pamatuje si jednotlivé záznamy ve vlastní paměťové tabulce).

Web Services
 Ke změnám došlo i v případě vývoje komponent (D)COM(+). V průvodci vytváření COM objektů lze hned zadat to, zda se má implementovat nové rozhraní či již nějaké definované (lze vybrat ze seznamu zaregistrovaných rozhraní v systému). Opět i zde občas dojde k „zajímavým“ chybám (od softwarové chyby v Delphi přes run-time error až k dalších hlášením) například při registraci knihovny. Nevíte někdo o tom, že by Borland propustil všechny testery?
Web Snap
 

Změny a novinky v překladači

U výčtových typů lze jednotlivým prvkům určit hodnotu podobně jako v jazyce C (výhoda je jasná). Typ Variant podporuje nejen osmibytovou celočíselnou hodnotu ale dokonce vaše vlastní datové typy. K direktivám překladače přibyla mimo jiné direktiva IF, pomocí které se lze dotazovat to, zda je deklarovaná nějaká proměnná případně na její hodnotu.

Vestavěný assembler doznal také výraznější změny. Díky kompletnímu přepracování jsou podporovány instrukční sady MMX, SIMD, Enhanced MMX a Intel SSE procesorů Pentium Pro, Pentium III a Pentium 4. Dále jsou podporovány sady AMD Enhanced 3D procesoru AMD K7.

XML a eBusiness

XML dnes umí každá uklizečka, takže by bylo značně divné, pokud by Delphi na tuto skutečnost nereagovaly. Kromě nové komponenty TXMLDocument, což je zapouzdření XML parseru od Microsoftu (tedy standardně, lze si dodat libovolný DOM parser), je možné použít průvodce XML Data Binding, který z dodaného souboru typu XML, DTD, BIZ a dalších vygeneruje zdrojový kód pro přístup ke XML souborům definovaných právě v těchto souborech. Tento průvodce vytvoří zdrojovou jednotku s definovanými rozhraními a jejími implementaci přímo na míru. Dalším nástrojem je XML Mapper, který vytvoří transformaci mezi daty v XML a datovou množinou.

S XML úzce souvisí i elektronické obchodování. K tomu s Delphi přichází několik nových technologií. BizSnap nabízí vývoj webových služeb s technologií XML, XSL, SOAP či WSDL. K dispozici jsou noví průvodci a nové komponenty. Pomocí WebSnapu tak můžete vyvíjet nejen pro IIS či Netscape, ale nově i pro Apache. Dále je možné pomocí XSL Page Produceru transformovat data z XML pomocí XSL do HTML stránek. Je podporováno skriptování na straně serveru a ladění těchto skriptů.

Tak si to zrekapitulujeme

Výpisem novinek bychom mohli pokračovat dále a dále. Snažil jsem se uvést ty, které zasáhnou největší počet vývojářů, budou-li šestou verzi používat (a ani zde není výčet úplný). Také jsem upozornil na některé problémy a chyby, na které jsem v poměrně krátké době narazil jednak při sledování nových věcí, ale hlavně při převodu aplikace z předchozí verze (mimochodem, pokud převedete aplikaci z předchozí verze a pak se rozhodnete pro návrat, máte smůlu, pokud používáte české znaky ve formulářích – Borland totiž opět změnil způsob práce s řetězci v resourcích).

Po dobu recenze jsem měl s produktem několik dalších drobných problémů. Jednou se mi stalo, že se Delphi ukončovaly ještě v době nabíhání. Důvod jsem nenašel, ale po vyčištění registrů pomocí utilitky D6RegClean bylo vše v pořádku (pravda, vše jsem si musel nastavit znovu). Pokud jsem zavolal doplňování kódu na klíčových slovech public, private či protected, došlo k vyvolání neobsloužené výjimky a následné neakceptování klávesy Enter. Problém s nápovědou jsem již popisoval, pouze doplním, že občas jsem ignorován při stisku klávesy F1 (zřejmě IDE přeceňuje moji inteligenci, což sice na jednu stranu potěší, na druhou mi to je kromě dobrého pocitu k ničemu).

Důležitou otázkou tedy je, zda provést přechod na novou verzi či nikoliv. U verze Enterprise je to jasné. Pokud potřebujete vytvářet moderní (webovou) aplikace s podporou XML, elektronického obchodování a věcí s tím souvisejících, je přechod téměř nutností. U verze Professional to již poněkud komplikovanější. Nepotřebujete-li vyvíjet pro Linux a novinky v prostředí a VCL nejsou pro vás životně důležité, zůstaňte u předchozí verze, ty nervy vám za to nestojí. Pokud zatím Delphi nemáte a zvažujete o koupi, rozmyslete si, co chcete – D5 je pořád ještě životaschopná verze, s Delphi 6 můžete dokázat více.

Prokletí sudých verzí, zdá se, pokračuje. Jestliže Delphi 5 získaly cenu Produkt měsíce (byť s drobnými výhradami), Delphi 6 si je zdaleka nezasluhují. Některé věci jsou opravdu silné kafe. Rozhodně je pořád co vylepšovat a doufám, že opravný baliček tu bude co nejdříve (a že bude pouze jeden). Neříkám nekupujte, říkám kupujte velmi rozvážně. Koneckonců i ta cena je – řekněme – vyšší, než jsme byli zvyklí.

Plusy, mínusy, závěr

Plusy

  • Novinky v IDE
  • XML Data Binding Wizard
  • dbExpress
  • Nové knihovny
  • CLX

Mínusy

  • Některé nedotaženosti
  • Drobné chyby v prostředí, komponentách
  • Složitější volání nápovědy
  • Chybí alespoň řádkový překladač pro Linux

Závěr

Pro vývoj kvalitních robustních aplikací nepostradatelný nástroj s mnoha vylepšeními, ale také s mnoha možnostmi, jak vylepšovat i nadále.


Tento článek byl napsán pro časopis Softwarové noviny 9/2001.

Upozornění: tento text neprošel redakční úpravou, takže je tak, jak byl napsán včetně případných chyb. Žádná část tohoto článku nesmí být použita bez předchozího souhlasu autora.

Seznam mých dalších článků je v tomto přehledu.




[Akt. známka: 0 / Počet hlasů: 0] 1 2 3 4 5

Celý článek | Autor: Slávek Rydval | Počet komentářů: 0 | Přidat komentář | Informační e-mailVytisknout článek

  Čtenář
Jméno:
Heslo:


Registrace | Info
Zapomenuté heslo

  Vyhledávání

Hledej
na Nawebce!


Rozšířené vyhledávání

  Kalendář
<<  Září  >>
PoÚtStČtSoNe
  1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30    

  Reklama


rkEdit Oracle Profiler
rkEdit Oracle Profiler