Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

download Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

of 474

Transcript of Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    1/473

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    2/473

    O ksiceTeixeira i Pacheco wci dzielsiz czytelnikami swwiedzi dowiadczeniem, uczc jak tworzy siaplikacjebazodanowe -- lokalne, wielowarstwowe i internetowe oraz nowe komponenty, biblioteki DLL itd. Czytajc tksik, masz niepowtarzalnokazjpodnie swoje kwalifikacje, gdy umoliwia ona zapoznanie sim.in. zzasadami tworzenia aplikacji midzyplatformowych, metodologi tworzenia komponentw i ich edytorw,filozofiprogramowania obiektowego i programowaniem wspbienym.

    Niniejsza ksika, napisana przez dwukrotnych laureatw nagrody za najlepsz ksik o Delphi, przyznanejprzez czytelnikw Delphi Informant, stworzona przez programistw dla programistw, to miarodajny

    przewodnik po nowociach Delphi 6.

    Czytajc "Delphi 6. Vademecum profesjonalisty", poznasz midzy innymi:

    historiDelphi i techniczne oraz ekonomiczne uwarunkowania jego rozwoju,

    bogactwo rodowiska IDE i wspdziaanie jego elementw w procesie tworzenia aplikacji,

    najwaniejsze elementy jzyka Object Pascal,

    szczegy biblioteki CLX i zasady tworzenia aplikacji midzyplatformowych dla Windows i Linuksa,

    mechanizm komunikatw Windows i zasady ich obsugi w tworzonych aplikacjach,

    podstawy tworzenia i wykorzystywania bibliotek DLL,

    realizacj programowania wspbienego za pomoc wtkw i wkien oraz mechanizmwsynchronizujcych,

    zastosowanie nowych komponentw bazodanowych dbExpress i dbGo for ADO.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    3/473

    DedykacjeKsiktdedykujemy ofiarom i bohaterom tragedii 11 wrzenia 2001 roku.

    Z podzikowaniami dla mojej rodziny Helen, Coopera i Ryana. Bez ich wsparcia i yczliwoci nie

    ukoczybym nigdy tej ksiki prdzej chyba bym oszala. Steve

    Podzikowania dla mojej rodziny Anny, Amandy i Zacharego. Serdeczne dziki za wsparcie, mio icierpliwo.

    Xavier

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    4/473

    PodzikowaniaDzikujemy wszystkim tym, bez pomocy ktrych niniejsza ksika nie mogaby si ukaza. Jednoczenieinformujemy, i odpowiedzialni jestemy osobicie za wszelkie tkwice w niej bdy i uchybienia.

    Przede wszystkim dzikujemy naszym wspautorom, bez ktrych wiedzy i dowiadczenia niniejszy przewodniknie byby z pewnoci tak dobry. Ray Konopka (Mr. Component) jest autorem rozdzia u 13. powiconegokomponentom CLX; byskotliwy rozdzia 21. o technologii DataSnap jest dzieem guru Dana Misera; DavidSampson, niekwestionowany ekspert od technologii CORBA, dzieli si swoj wiedz z Czytelnikami wrozdziale 191. Owocem talentu Roberta Dra Boba Swarta jest rozdzia 22. opisujcy tworzenie aplikacji ASP,za magik od Internetu Nick Hodges wyczarowa rozdzia 23. traktujcy o aplikacjach wykorzystujcychtechnologiWebSnap.

    Kolejna porcja podzikowa dla redaktorw technicznych Thomasa Theobalda i Johna Thomasa oraz ichwsppracownikw. Mimo absorbujcej pracy nad nowym oprogramowaniem, znaleli czas na zweryfikowaniezawartoci niniejszej ksiki.

    Podczas pisania naszego przewodnika nie szczdzili nam cennych rad i wskazwek nasi przyjaciele iwsppracownicy, midzy innymi (w kolejnoci alfabetycznej) Alain Lino Tadros, Anders Hejlsberg, AndersOhlsson, Charlie Calvert, Victor Hornback, Chuck Jazdzewski, Daniel Polistchuck, Danny Thorpe, DavidStreever, Ellie Peters, Jeff Peters, Lance Bullock, Mark Duncan, Mike Dugan, Nick Hodges, Paul Qualls, RuchJones, Roland Bouchereau, Scott Frolich, Steve Beebe, Tom Butt i wielu innych, ktrych nie wymienilimytu z powodu szczupoci miejsca.

    Na koniec, wielkie dziki dla Pearson Technology Group: Carola Ackermana, Christiny Smith, Dana Scherfa iwielu innych, ktrych nawet nie mielimy przyjemnoci pozna, a bez udziau ktrych ksika niniejsza niemogaby sta sifaktem.

    1 Rozdzia 14. i rozdziay nastpne te znajdsioczywicie w drugim tomie niniejszej ksiki (przyp. red. wyd. pol.)

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    5/473

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    6/473

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    7/473

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    8/473

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    9/473

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    10/473

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    11/473

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    12/473

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    13/473

    13

    Autorzy

    Steve Teixeira jest dyrektorem ds. Core Technology w, wiodcej na rynku zabezpiecze internetowych, firmie

    Zone Labs; poprzednio peni funkcj dyrektora technicznego w firmie ThinSpace, zajmujcej si aplikacjamidla telefonii bezprzewodowej. Wsppracowa rwnie z firmFull Moon Interactive, tworzcaplikacje dla e-biznesu. Jako badacz i projektant w firmie Borland odegra jedn z czoowych rl w powstaniu Delphi iC++Buildera. Naley do grupy najbardziej poczytnych autorw zajmujcych si informatyk jego czteryksiki otrzymay najwysze wyrnienia czytelnikw; publikuje take na amach wielu czasopismpowiconych programowaniu. Jego artykuy i ksiki zostay przetumaczone na kilkanacie jzykw. Jestuczestnikiem wielu spotka i konferencji przemysowych na caym wiecie.

    Xavier Pacheco jest prezesem i gwnym inynierem Xapware Technologies firmy konsultingowo-projektowej specjalizujcej siw tematyce accelerating visions. Jest aktywnym uczestnikiem wielu konferencjiprzemysowych, publikuje te na amach wielu czasopism powiconych Delphi. Jest niekwestionowanymekspertem w dziedzinie Delphi o sawie midzynarodowej i czonkiem TeamB grupy wsppracownikw-ochotnikw Borlanda. Jest autorem ksiek z zakresu informatyki; cztery z nich otrzymay najwyszewyrnienia czytelnikw. Rwnie jego ksiki doczekay si wielojzycznych przekadw. Mieszka wColorado Springs z onAnni dwjkdzieci Amandi Zacharym.

    Bob Swart (znany take jako Dr. Bob www.drbob42.com) jest czonkiem UK Borland Connection, a takeautorem, instruktorem i konsultantem w zakresie Delphi, Kylixa i C++Buildera. Mieszka w Helmond(Holandia). Stale wsppracuje z pismami The Delphi Magazine, Delphi Developer, UK-BUG DevelopersMagazine; uczestniczy take w dyskusjach online w ramach DevX, TechRepublic i Borland Community Web.Jest wspautorem ksiek The Revolutionary Guide to Delphi 2, Delphi 4 Unleashed, C++Builder 4Unleashed, C++Builder 5 Developers Guide, Kylix Developers Guide i oczywicie niniejszej ksiki.Uczestniczy czynnie w seminariach powiconych Delphi i Kylixowi na caym wiecie, jest take autorem kursuinstruktaowego Dr.Bobs Delphi Clinics. W czasie wolnym lubi oglda filmy najchtniej Star TrekVoyager i Deep Space Nine w towarzystwie 7-letniego syna Erika Marka Pascala i 5-letniej crki NatashyLouise Delphine.

    Dan Miser jest dyrektorem ds. bada

    i rozwoju w borlandowskiej grupie DSP, gdzie spdza wi

    kszo

    swegoczasu na badaniu i rozpoznawaniu nowych technologii. Dziaa rwnie w grupie badawczo-rozwojowej Delphi,

    gdzie odpowiedzialny jest za rozwj oprogramowania zwizanego z technologiDataSnap. Celem jego badajest znalezienie sposobw wymiany informacji pomidzy rnymi systemami i rodowiskami stdzainteresowanie rnymi technologiami przetwarzania rozproszonego, jak MIDAS, SOAP, DCOM, RMI, J2EE,EJB, Struts i RDS. Ma rwnie niemae zasugi w popularyzowaniu Delphi, m.in. jako wspautor serii DelphiDevelopers Guide. Jest autorem wielu artykuw w czasopismach informatycznych, czonkiem borlandowskiejgrupy TeamB i lektorem na dorocznych konferencjach Borlanda.

    David Sampson jest inynierem ds. badawczo-rozwojowych w borlandowskiej grupie RAD Tools Group, gdzieodpowiedzialny jest za integracj technologii CORBA z produktami typu RAD. Od wielu lat zajmuje sirozwojem Pascala, Delphi i C++, jest rwnie czynnym uczestnikiem deweloperskich konferencji Borlanda.

    Mieszka ze swoj onw Roswell (Georgia); pasjonuje si hokejem oraz aikido, pomaga take swojej onieopiekowa sisforpsw rasy Basenji.

    Nick Hodges jest starszym inynierem ds. rozwojowych w firmie Lemanix Corporation w St. Paul wMinnesocie. Jest czonkiem borlandowskiej grupy TeamB, od wielu lat zajmuje si rozwojem Pascala i Delphi.Jest doradc w ramach Borland Conference Advisory Board, uczestniczy take (jako autor) w grupachdyskusyjnych Borlanda oraz jako lektor na borlandowskich konferencjach. Mieszka w St. Paul z on i dwjkdzieci, lubi czyta ksiki, biega, pomaga take onie w edukacji swych dzieci.

    Ray Konopka jest zaoycielem firmy Raize Software Inc. i gwnym architektem CodeSite i RaizeComponents. Jest autorem niezwykle popularnej ksiki Developing Custom Delphi Components oraz znanej

    kolumny Delphi by Design na amach Visual Developer Magazine. Specjalizuje siw tworzeniu nowychkomponentw i projektowaniu interfejsw uytkownika, jest take lektorem na konferencjach Borlanda nacaym wiecie.

    http://www.drbob42.com/http://www.drbob42.com/
  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    14/473

    15

    Przedmowa do wydaniaoryginalnego

    Delphi 6 dwa lata pracy, cae ycie korzyci.

    Mam wielkie szczcie pracowa w Borlandzie od ponad 16 lat latem 1985 roku przyszedem tutaj, aby: 1)

    wspuczestniczy w tworzeniu programw narzdziowych nowej generacji (UCSD Pascal i zwizane z nimnarzdzia wywoywane z wiersza polece staway sipowoli przestarzae), 2) pomc w usprawnieniu procesutworzenia oprogramowania (by moe kosztem czasu powiconego dla rodziny i przyjaci) oraz 3) przyczynisi do wzbogacenia warsztatu programistw (a wic rwnie mojego). Mio jest pracowa w zespolezajmujcym siod 18 lat ulepszaniem technologii programistycznych.

    Podobnie jak Turbo Pascal w 1983 roku, Delphi radykalnie zmienio oblicze programowania jedenacie latpniej. Programowanie zorientowane obiektowo, programowanie dla Windows i programowanie obsugi bazdanych stao si nagle o wiele atwiejsze ni dotychczas; kolejne wersje Delphi przyniosy ze sob dalszeuatwienia w zakresie tworzenia aplikacji rozproszonych i aplikacji internetowych. Mimo i przez latawyposaalimy nasze produkty w rnorodne funkcje, mimo i napisalimy megabajty pomocy kontekstowej,wci wiele rzeczy pozostaje niedopowiedzianych i wielu jeszcze rad i wskazwek mona by udzieliprogramistom, by tworzone przez nich projekty byy lepsze.

    Czy wic entuzjastyczne przyjcie Delphi 5 nie byo w peni zasuone? Czy Delphi 5 nie przyczynio sidouproszczenia procesu tworzenia aplikacji internetowych i rozproszonych aplikacji bazodanowych, wp ywajctym samym na zwikszenie produktywnoci programistw? I co najwaniejsze czy zesp Delphi po razkolejny bdzie w stanie stawi czoo oczekiwaniom dzisiejszych i jutrzejszych projektantw?

    Istotnie: autorzy Delphi powicili ponad dwa lata na zbieranie opinii uytkownikw Delphi, na obserwowanie,w jaki sposb faktycznie wykorzystuj oni dostpne narzdzia do tworzenia aplikacji, wreszcie naanalizowanie problemw, ktre nios ze sob technologiczne wyzwania nowego tysiclecia. Owocem tychwysikw stay siuatwienia w tworzeniu aplikacji dla e-biznesu, usug sieciowych opartych na XML/SOAP,aplikacji integracyjnych B2b/B2C/P2P, aplikacji midzyplatformowych, rozproszonych aplikacji typuAppServer/EJB, i wielu innych aplikacji dla Windows Me/2000 i Office 2000.

    Po raz kolejny Steve Teixeira (ksywa T-Rex) i Xavier Pacheco (zwany po prostu X) dali wyraz swemukunsztownemu rzemiosu, tworzc przewodnik pozwalajcy odkry gbi i poczu wiey oddechprogramowania w Delphi 6. To moi wieloletni koledzy, wspaniali pracownicy, lektorzy na naszych dorocznychkonferencjach no i czonkowie wspaniaej wsplnoty Borlanda.

    Jestem przekonany, e ich najnowsze dzieo spotka si z przyjciem nie mniej entuzjastycznym ni ichpoprzednie monografie powicone Delphi. yczwielu radoci i oczywicie korzyci z programowania wDelphi 6 i jeszcze wspanialszych projektw.

    David Intersimone (David I)

    Vice President, Developer Relation

    Borland Software Corporation

    [email protected]

    mailto:[email protected]:[email protected]
  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    15/473

    19

    Cz I

    Podstawyprogramowania

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    16/473

    21

    Rozdzia 1.

    Programowanie w DelphiW niniejszym rozdziale przedstawimy oglny zarys Delphi jego histori, moliwoci poszczeglnych wersji,przydatno do tworzenia programw dla Windows oraz inne informacje, ktre mog by pomocne kademuprojektantowi. Zajmiemy si take kilkoma interesujcymi funkcjami IDE; niektre nie s znane nawetdowiadczonym projektantom.

    Zadaniem tego rozdziau nie jest jednak nauka tworzenia aplikacji w Delphi od podstaw staralimy siunikapowtarzania informacji powszechnie dostpnych w dokumentacji, stawiajc raczej na metodyk wykorzystaniaistniejcych mechanizmw, wypracowanprzez lata naszych dowiadcze z Delphi. Niewtpliwie skorzystajna tym dowiadczeni projektanci pocztkujcym proponujemy natomiast rozpoczcie lektury oddokumentacji Delphi i stopniowe poznawanie funkcjonowania IDE oraz oglnych zasad tworzenia aplikacji naprostych przykadach; zdobycie niezbdnego dowiadczenia bdzie tylko kwesticzasu.

    Rodzina produktw Delphi

    Delphi 6 wystpuje w trzech rnych wersjach: Delphi 6 Personal, Delphi 6 Professional i Delphi 6 Enterprise.Kada z tych wersji adresowana jest do innej grupy projektantw, charakteryzujcych si okrelonymipotrzebami.

    Delphi 6 Personal jest wersj podstawow i najbardziej ograniczon. Zawiera wszystko, co niezbdne dorozpoczcia nauki Delphi i jest idealna dla hobbystw oraz twrcw prostych programw narzdziowych napotrzeby wasne. Techniczne moliwoci tej wersji snastpujce:

    optymalizujcy 32-bitowy kompilator Object Pascala, oferujcy wiele nowych i ulepszonych elementwjzyka;

    biblioteka VCL (Visual Component Library), zawierajca ponad 85 standardowych komponentw;

    obsuga pakietw, umoliwiajca tworzenie maych rozmiarowo aplikacji i bibliotek komponentw;

    zintegrowane rodowisko IDE zawierajce edytor, debugger, projektanta formularzy i wiele innychproduktywnych narzdzi;

    rozszerzenia IDE, m.in. wizualne dziedziczenie formularzy (Visual Form Inheritance), hierarchiczny

    podgld obiektw (Object TreeView), uzupenianie klas (Class Completion), Code Insight itp.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    17/473

    22

    pena obsuga Win32 API, wcznie z COM, GDI DirectX, wielowtkowoci i rnymi pakietami SDK(Software Development Kits) Microsoftu i innych wytwrcw.

    Licencja zwizana z wersj Personal nie zezwala na komercyjn dystrybucj aplikacji stworzonych za jejpomoc; mogby one wykorzystywane tylko do uytku osobistego.

    Wersja Delphi 6 Professional adresowana jest do tych profesjonalnych projektantw, dla ktrych zbdne s

    zaawansowane mechanizmy typowe dla aplikacji korporacyjnych (enterprise level). Zawiera ona wszystkiemechanizmy wersji Personal , a ponadto:

    ponad 255 standardowych komponentw VCL;

    ponad 160 komponentw CLX na potrzeby aplikacji midzyplatformowych dla Windows i Linuksa;

    obsug baz danych m.in. podsystem DataCLX, kontrolki bazodanowe, komponenty i sterownikimidzyplatformowe dbExpress, Active DataX Objects (ADO), Borland Database Engine (BDE) dlakompatybilnoci z wczeniejszymi wersjami Delphi, mechanizm tzw. wirtualnego zbioru danych (virtualdataset) umoliwiajcy integracj rnorodnych typw baz danych z VCL, Database Explorer,repozytorium danych i rodzime komponenty InterBase (InterBase Express);

    sterowniki InterBase i MySQL dla dbExpress;

    implementacjarchitektury DataCLX (poprzednio znanej jako MIDAS) z lokalnmaszyndanych MyBaseopartna XML-u;

    kreatory do tworzenia komponentw COM/COM+, takich jak kontrolki ActiveX, formularze aktywne(ActiveForms), serwery automatyzacji, arkusze waciwoci i komponenty transakcyjne;

    rnorodno narzdzi i komponentw niezalenych wytwrcw, m.in. narzdzia internetowe INDY,komponenty raportujce QuickReport, komponenty prezentacji graficznej TeeChart i komponentyinternetowe FastNet firmy NetMasters;

    serwer bazy danych InterBase 6 z licencjna 5 uytkownikw;

    narzdzie dystrybucji sieciowej kontrolek ActiveX (Web Deployment);

    narzdzie do instalacji aplikacji InstallSHIELD MSI Light;

    interfejs OpenTools API umoliwiajcy samodzieln rozbudow funkcjonalnoci IDE i dostarczajcyinterfejsu dla systemu kontroli wersji PVCS;

    narzdzia i komponenty NetCLX WebBroker umoliwiajce tworzenie internetowych aplikacjimidzyplatformowych;

    kod rdowy bibliotek VCL, CLX, RTL i edytorw waciwoci.

    Zgodnie z licencj, aplikacje stworzone za pomocwersji Professional mogby rozpowszechniane w sposbkomercyjny.

    Delphi 6 Enterprise to wersja najbardziej rozbudowana, przeznaczona dla projektantw tworz cych aplikacje naszczeblu przedsibiorstwa (enterprise level). Oprcz mechanizmw dostpnych w wersjach Personal iProfessional zawiera take:

    ponad 300 standardowych komponentw VCL;

    obsug technologii BizSnap umoliwiajcej tworzenie aplikacji opartych na jzyku XML oraz usugsieciowych (Web Services);

    platform projektow WebSnap pozwalajc na integracj XML-a i technik skryptowych z aplikacjamiinternetowymi;

    implementacj specyfikacji CORBA na potrzeby tworzenia aplikacji klientw i serwerw, wraz zVisiBrokerem ORB w wersji 4.0x oraz Borland APP Serverem w wersji 4.5;

    oprogramowanie TeamSource zapewniajce kontrolwersji kodu rdowego na podstawie rnorodnychmechanizmw, m.in. ZIP i PVCS;

    narzdzia umoliwiajce atwzmianwersji jzykowej i lokalizacjaplikacji;

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    18/473

    23

    rodzime sterowniki SQLLinks BDE dla serwerw Oracle, MS SQL Server, InterBase, Informix, Sybase iDB2;

    sterowniki Oracle i DB2 dla dbExpress;

    zaawansowane narzdzia tworzenia aplikacji opartych na SQL-u, m.in. SQL Explorer, SQL Monitor, SQLBuilder i obsuga kolumn abstrakcyjnych typw danych (ADT) w przegldarce tabelarycznej.

    Podobnie jak w przypadku wersji Professional, licencja zezwala na komercyjn dystrybucj aplikacjistworzonych za pomocwersji Enterprise.

    Delphi co i dlaczego?Na czsto zadawane pytania w rodzaju Co czyni Delphi tak dobrym? oraz Dlaczego powinienem raczejwybra Delphi ni ? wypracowalimy przez lata dwie odpowiedzi: krtk i dug. Krtka odpowied brzmiproduktywno prostoti szybko tworzenia programw dla Windows za pomocDelphi naprawdtrudnoprzeceni.

    Komu ta lakoniczna odpowied nie wystarczy, musi cierpliwie wysucha odpowiedzi dugiej, wymieniajcej

    pi najwaniejszych cech, ktre decydujo potdze Delphi oto one:

    komfort wizualnego projektowania aplikacji,

    szybko kompilacji kontra efektywno generowanego kodu,

    moliwoci jzyka programowania w kontekcie jego zoonoci,

    elastyczno i skalowalno architektury baz danych,

    wzorce projektowania i uytkowania wymuszone przez strukturrodowiska.

    Cechy te zestawilimy w postaci picioramiennego diagramu przedstawionego na rysunku 1.1.

    Rysunek 1.1. Graf produktywnoci Delphi

    Mimo i powysze kryteria wybrane zostay cokolwiek subiektywnie i nie uwzgldniaj kilku istotnychczynnikw, jak np. instalacja i rozpowszechnianie gotowych aplikacji, dokumentacja, czy wykorzystanieproduktw niezalenych wytwrcw, sjednak wystarczajco przekonujce. Poniewa kade z przedstawionychkryteriw moe mie rnwagdla rnych projektantw, proponujemy wykonanie prostego eksperymentu:naley na kadej z piciu osi z rysunku 1.1 umieci punkt odlegy od rodka diagramu proporcjonalnie doistotnoci cechy reprezentowanej przez dano; czc poszczeglne punkty liniami, otrzymamy piciokt imwiksze jego pole, tym wiksza przydatno Delphi dla konkretnego czytelnika.

    Komfort wizualnego projektowania aplikacjirodowisko wizualnego projektowania aplikacji narzdzi typu RAD mona zasadniczo podzieli na trzywsppracujce ze sob elementy: edytor, debugger i projektant formularzy. I tak, w miar umieszczania na

    formularzu kolejnych komponentw, Delphi generuje automatycznie zwizany z tym kod rdowy; kod tenmona nastpnie modyfikowa i (lub) uzupenia za pomoc edytora, za po skompletowaniu mona goskompilowa, uruchomi i ledzi za pomoczintegrowanego debuggera.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    19/473

    24

    Edytor Delphi wyposaony jest w kilka uytecznych mechanizmw, z ktrych bodaj najbardziej spektakularnymjest CodeInsight, pozwalajcy zaoszczdzi czas powicony na wpisywanie z klawiatury; mechanizm tenopiera swe dziaanie na informacji uzyskiwanej z kompilatora (w przeciwiestwie do Visual Basica,pobierajcego analogiczn informacj z odpowiedniej biblioteki), co czyni go uytecznym w wielu rnychsytuacjach. Chocia domylne ustawienia edytora Delphi s w peni zadowalajce, wielu uytkownikwpreferuje ustawienia charakterystyczne dla Visual Studio jako bardziej konfigurowalne.

    Zintegrowany debugger ostatnich wersji Delphi czy w sobie cechy Visual Studio z zaawansowanymimechanizmami w rodzaju zdalnego ledzenia, doczania procesu, ledzenia pakietw i bibliotek DLL podnadzorem aplikacji wywoujcej, obserwacji wykonywanego kodu maszynowego i rejestrw itp. Komfortu pracydopenia moliwo ustalania dogodnego ukadu okien (z wykorzystaniem dokowania) i zapisywania tychustawie w postaci nazwanych schematw. Ze zrozumiaych wzgldw brak jest natomiast w Delphi moliwocizmiany kodu aplikacji w trakcie jej wykonywania, charakterystycznej dla rodowisk interpretowanych w rodzajuVisual Basica czy niektrych narzdzi Javy w rodowisku wykonujcym rasow kompilacjzaimplementowanie czego takiego z pewnocibyoby niezmiernie trudne.

    Projektant formularzy jest nieodczn czci rodowisk typu RAD Delphi, Visual Basica, C++Buildera iPowerBuildera. Wczeniejsze, klasyczne rodowiska projektowe, jak Visual C++ czy Borland C++,zorientowane s raczej na edytory dialogowe, te za nie posiadaj zdolnoci tak cisego integrowania zpozostaymi elementami rodowiska jak projektant formularzy. Brak tego ostatniego w wyrany sposb wpywa

    ujemnie na oglnproduktywno caego narzdzia wszak jednym z elementw diagramu na rysunku 1.1 jestwanie projektowanie wizualne.

    Przez ostatnie lata Delphi i Visual Basic przecigay siw coraz to nowych pomysach ulepszania projektantaformularzy, lecz pod jednym przynajmniej wzgldem Visual Basic nie jest w stanie zdystansowa swegokonkurenta. Ot Delphi stworzone zostao od pocztku w architekturze zorientowanej obiektowo, a to pocigaza sob niebagatelne konsekwencje praktyczne w postaci zjawiska zwanego wizualnym dziedziczeniemformularzy (Visual Form Inheritance): wszelkie zmiany, wprowadzone do danego formularza, automatycznieodzwierciedlone zostaj we wszystkich dziedziczonych z niego formularzach . W szczeglnoci kadyformularz dziedziczy wszelkie cechy swej klasy bazowej klasy TForm.

    Szybko kompilacji kontra efektywno generowanegokoduWobec powtarzajcych si cyklicznie poszczeglnych etapw tworzenia kodu rdowego edycja,rekompilacja, testowanie, edycja, rekompilacja itd. szczeglnego znaczenia nabiera czas kompilowania kodu.Przy kosztownych czasowo kompilacjach uytkownik zmuszony jest do wprowadzania wikszej liczbypoprawek na raz (tj. pomidzy kolejnymi kompilacjami), a to raczej nie przyczynia si do wzrostuproduktywnoci.

    O zaletach efektywnego kodu wynikowego nie trzeba nikogo przekonywa dua szybko wykonywaniaprogramu i jego niewielki rozmiar zawsze bdmile widziane.

    Szybko kompilacji to jedna z najbardziej cenionych cech Delphi posiada ono bodaj najszybszy kompilatorjzyka wysokiego poziomu na platformie Windows. Jzyk C++, tradycyjnie (i z koniecznoci) kompilujcy siwolniej od Pascala, w ostatnich wersjach Visual C++ i C++Buildera do wiadczy wielu zabiegwoptymalizacyjnych w rodzaju konsolidacji przyrostowej (incremental linking), czy rnych strategii buforowaniakodu; mimo to jego kompilatory i tak srednio kilka razy wolniejsze od kompilatora Delphi.

    Doceniwszy szybko kompilatora, warto przyjrze si drugiej stronie medalu mianowicie efektywnocitworzonego kodu wynikowego i zada istotne pytanie: czy ulepszanie jednego z tych czynnikw musiodbywa si kosztem drugiego? Okazuje si, e niekoniecznie: kompilator Delphi korzysta z tego samegozaplecza (back-end), co kompilator C++Buildera, obydwa wic produkujrwnie efektywny kod wynikowy.

    Ostatnie wersje Visual C++ zdajsidorwnywa Delphi pod wzgldem efektywnoci generowanego kodu (wwielu przypadkach kod ten jest nawet efektywniejszy), a to za sprawpewnych wyszukanych optymalizacji. Icho nie ma to wikszego znaczenia dla szeroko rozumianego tworzenia aplikacji, to moe sta siniezmiernieistotne w procesach dokonujcych intensywnych oblicze.

    W kontekcie oglnie pojtej kompilacji Visual Basic stanowi pewn osobliwo. W czasie projektowania

    aplikacji bazuje on na kodzie cakowicie interpretowanym, co zapewnia wystarczajcmobilno; kompilatorprzeksztacajcy gotowy kod do pliku .EXE plasuje si pod wzgldem szybkoci daleko za Delphi i C++, to

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    20/473

    25

    samo mona powiedzie o generowanym kodzie wynikowym. Ostatnia wersja Visual Basica VisualBasic.NET znajdujca siw fazie beta-testw, wprowadza pewne usprawnienia w tym obszarze.

    Java to kolejny interesujcy przypadek. Kompilatory narzdzi zbudowanych na jej bazie (JBuilder i Visual J++)dorwnujszybkocikompilatorowi Delphi, lecz efektywno generowanego kodu czsto pozostawia wiele doyczenia. Biorc pod uwage fakt, e Java jest jzykiem interpretowanym trudno liczy na zmian tego stanurzeczy.

    Moliwoci jzyka programowania w kontekcie jegozoonociKady jzyk programowania oceniany jest gwnie w aspekcie swych moliwoci czyli popularnierozumianej mocy oraz zoonoci, przekadajcej si przede wszystkim na atwo jego nauczenia si,prostot uywania i podatno na bdy. Nie trzeba dodawa, i kryteria te maj charakter na wskrosubiektywny to, co dla pewnych osb jest dziecinnie atwe, dla innych moe by bariernie do pokonania;co, co wydaje si komu nieuzasadnionym ograniczeniem, dla kogo innego moe wrcz nosi znamiona

    elegancji. Nic wic dziwnego, i kwestia oceny danego jzyka programowania jest zwykle przedmiotemniekoczcych si sporw na grupach dyskusyjnych (i nie tylko), take ponisze konkluzje stanowisubiektywny punkt widzenia autorw.

    Jzykiem o zdecydowanie najwikszych moliwociach jest jzyk asemblera gdy istnieje moliwobezporedniego operowania rozkazami kodu maszynowego, mona zaprogramowa dosownie wszystko, coteoretycznie da sizaprogramowa. Owa niemal nieograniczono okupiona jest jednak ogromn zoonoci,podatnocina bdy i znacznymi utrudnieniami w pracy zespoowej. Trudno wyobrazi sobie nawet redniejwielkoci program dla Windows napisany cakowicie w asemblerze w miar wdrwki od jednegoprogramisty do drugiego, zmieniajcych sikoncepcji i pojawiajcych sinowych idei, tekst programu zdaje simie coraz mniej wsplnego z jzykiem programowania i stopniowo zaczyna przypomina, nie przymierzajc,opowie zapisan w sanskrycie. Mimo ogromnej mocy asemblera, jego zoono okazuje si czynnikiemzdecydowanie dyskwalifikujcym (w aspekcie przydatnoci do tworzenia aplikacji).

    C++ to inny przypadek wszechmocnego jzyka. Dziki preprocesorowi, szablonom, przecianiu operatorw iwielu innym wspaniaociom mona za pomoc C++ stworzy wrcz wasny jzyk programowania!Pozostajce do dyspozycji programisty rodki jzykowe, o ile uywane s rozsdnie, umoliwiaj stworzenieczytelnego, atwego do konserwacji kodu. Problem jednak w owym rozsdnym uywaniu bogactwokonstrukcji C++ umoliwia bowiem take tworzenie kodu wygldajcego wrcz horrendalnie; jzyk ten nieposiada adnych rodkw prowadzcych do stworzenia logicznego i przemylanego projektu kwestia tazalena jest cakowicie od odpowiedzialnoci programistw; jeli sidobrze zastanowi, mona w tym dostrzecpewien przejaw zoonoci.

    Jzykami, ktre wydaj si znakomicie godzi moc ze zoonoci s Object Pascal i Java. Obydwacharakteryzujsipewnymi ograniczeniami, ktre nie pozwalajzej na manowce i tym samym wymuszajw pewnym stopniu logik projektowania. I tak, np. brak w Object Pascalu i Javie moliwoci wielokrotnegodziedziczenia klas, a jest moliwo implementacji przez danklaswielu interfejsw; nie spotkamy tu takewygodnego, lecz czsto niebezpiecznego przeciania operatorw. Ponadto w obydwu rodowiskachzdecydowana wikszo zabiegw projektowych odbywa si na paszczynie kodu rdowego jzykaprogramowania, przy niewielkich moliwociach konfigurowania konsolidatora. Ograniczeniom tym towarzysz

    jednoczenie uyteczne mechanizmy nie powodujce wikszych zagroe zintegrowana obsuga wyjtkw,informacja o typach danych dostpna w czasie wykonania (RTTI) i acuchy z automatycznym zarzdzaniempamici(jako rodzime typy jzyka programowania). Nie jest te kwestiprzypadku, i zarwno Object Pascal,

    jak i Java to jzyki stworzone nie przez oficjalne komitety, lecz w ramach ma ych grup, bardzo dobrzewiedzcych, jak powinien wyglda jzyk programowania.

    Podstawowym zaoeniem, lecym u podstaw Visual Basica, bya moliwo szybkiej nauki programowania.Prosty pocztkowo jzyk zacz jednak z czasem obrasta w dodatkowe moliwoci i stawa sicoraz bardziejzoony. Visual Basic wci posiada wiele ogranicze, ktre trzeba omija okrndrog, oczywicie za cendodatkowej komplikacji projektu. Visual Basic.NET zdaje siczyni znaczce postpy w tym obszarze, jednakkosztem wstecznej kompatybilnoci.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    21/473

    26

    Elastyczno i skalowalno architektury baz danychPoniewa Borland nie posiada wasnej agendy do spraw baz danych, obecna wersja Delphi syntetyzuje w sobiete mechanizmy obsugi baz danych, ktre autorzy uznali za warte implementacji ze wzgldu na elastyczno imnogo potencjalnych zastosowa. Mamy wic efektywn technologi dbExpress, cho efektywno taokupiona jest w pewnym stopniu brakiem niektrych zaawansowanych elementw, poza tym repertuar

    sterownikw jest obecnie raczej ograniczony. BDE wci dziaa, i jest niezym rozwizaniem dla wielu aplikacji,gdy wsppracuje z wieloma rnorodnymi rdami danych; Borland nie ukrywa jednak zamiarw wycofaniasi z tej technologii. Komponenty ADO dostarczaj efektywnych rodkw komunikacji z danymi poprzezmechanizm ADO bd za porednictwem ODBC. Uytkownikom serwera InterBase Delphi oferuje zestawrodzimych komponentw IBExpress.

    Uytkownik, dla ktrego aden z dostpnych standardowo mechanizmw nie okae si zadowalajcy, moezorganizowa dostp do danych wedle swego wasnego pomysu, wykorzystujc architektur abstrakcyjnegozbioru danych, bd te moe zakupi u niezalenych wytwrcw gotowe rozwizanie tej kategorii. MechanizmDataCLX umoliwia ponadto logiczny lub fizyczny podzia na warstwy, organizujce dostp do poszczeglnychrde danych.

    Produkty Microsoftu zdajnatomiast w swym wasnych kierunku, opierajc sina rodzimych rozwizaniachtypu ODBC, OLE DB itp.

    Wzorce projektowania i uytkowania wymuszone przezstrukturrodowiskaElementem determinujcym najsilniej sposb korzystania z Delphi jest (przy caym szacunku dla pozostaychelementw) biblioteka VCL. Moliwo manipulowania waciwociami i zdarzeniami komponentw w trakcieprojektowania, moliwo tworzenia nowych komponentw drog dziedziczenia cech komponentwistniejcych to wszystko przyczynia si do skrcenia czasu budowania aplikacji i czyni sam procesbudowania bardziej odpornym na bdy uytkownika.

    Konkurencyjne rodowiska projektowe bazujce na komponentach nie stak elastyczne. Przykadowo kontrolkiActiveX, porwnywalne pod wzgldem elastycznoci na etapie projektowania, nie udostpniaj ju moliwocidziedziczenia klas (na potrzeby tworzenia nowych kontrolek). rodowiska tradycyjne, jak OWL czy MFC,wymagaj natomiast od uytkownika niezej znajomoci szczegw technicznych, by mona je byowykorzystywa w sposb naprawd produktywny i oczywicie pozbawione s tej elastycznoci na etapieprojektowania, jakmajkomponenty VCL.

    Microsoftowa biblioteka .NET wydaje si drog we waciwym kierunku, tym bardziej, e jej komponentywsppracujz niektrymi rodowiskami RAD, jak Visual C++ czy Visual Basic.

    Nieco historiiDelphi 6 stanowi kontynuacj linii rozwojowej, ktr ponad 17 lat temu zapocztkowa Anders Hejlsberg

    tworzc pierwsz wersj Turbo Pascala. Jego wyjtkowymi cechami byy: niezwykle szybka kompilacja,efektywna diagnostyka bdw, wygodna obsuga oraz co tu ukrywa ogromne bogactwo jzyka wporwnaniu z innymi wersjami Pascala, gwnie dla wszechobecnych wwczas komputerw klasy mainframe.Kolejne wersje Turbo Pascala zdaway si potwierdza t pochlebn opini wobec niesychanie szybkopostpujcego rozwoju informatyki i jej zastosowa oraz lawinowo rosncej popularnoci mikrokomputerw,programici stawali przed coraz to nowymi wyzwaniami, a z perspektywy czasu mona dzimiao stwierdzi,i Turbo Pascal jako narzdzie programistyczne speni pokadane w nim oczekiwania. Pojawienie siprogramowania modularnego (podzia na moduy w wersji 4.0), nakadkowanie i wykorzystanie jzykaasemblera oraz wbudowany debugger (wersja 5.0), wprowadzenie elementw programowania obiektowego(wersja 5.5) i wreszcie sprostanie standardom DPMI (wersja 7.0) umoliwiajce pokonanie coraz bardziejdotkliwej bariery 640kB pamici operacyjnej to tylko niektre z istotnych zalet kolejnych wersji TurboPascala.

    Nie jest wic niczym niezwykym, i Delphi okazao sigodnym nastpcTurbo Pascala. Programici otrzymaliwanie jego szstwersj, ktra jednoczenie jest pitwersjprzeznaczondla rodowiska 32-bitowego i

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    22/473

    27

    jednoczenie pierwsz, ktra przeamuje granice Windows, umoliwiajc tworzenie aplikacji take dla Linuksa,a w przyszoci (zgodnie z zapowiedziami Borlanda) dla wielu innych platform.

    Aby uzmysowi sobie postp, ktry dokona siw ponad siedmioletnim ywocie Delphi, przeledmy pokrtcehistorijego kolejnych wersji.

    Delphi 1Na pocztku kariery mikrokomputerw, w czasie niepodzielnego panowania szacownego DOS-u, programi cinie mieli zbyt duego wyboru narzdzi wybr w sprowadza siw zasadzie do wymuszonego kompromisupomidzy wygodnym i produktywnym, lecz mao sprawnym BASIC-iem (w rnorodnych odmianach) orazniezwykle efektywnym, lecz trudnym do opanowania jzykiem asemblera. Pojawienie si Turbo Pascalaoznaczao zasypanie tej do gbokiej przepaci. Nie inaczej rzecz simiaa w rodowisku Windows 3.1 wybr sprowadza sido pisania w C++ lub budowania w Visual Basicu.

    Pojawienie si Delphi 1.0 byo prawdziwym przeomem: oferowao ono zarwno konstruowania aplikacji zelementw wizualnych, jak i wczania tradycyjnych moduw tekstowych, przy jednoczesnym tworzeniu

    niezalenych plikw wykonywalnych, wykorzystaniu bibliotek DLL, dostpie do mechanizmw obsugi bazdanych, co czynio z niego niezwykle udany kompromis midzy skrajnymi biegunami pisania i budowania.

    Efektywno Delphi jako narzdzia projektowego bya tak uderzajca, e na okrelenie jego i narzdzi jemupodobnych w przyszoci stworzono powszechny ju dzi akronim RAD, stanowicy skrt od angielskiegookrelenia byskawicznego tworzenia aplikacji (Rapid Application Development).

    Kombinacja kompilatora, narzdzi projektowania wizualnego i efektywnej obsugi baz danych to byanaprawd kuszca propozycja dla dotychczasowych entuzjastw Visual Basica. Take uytkownicy TurboPascala postanowili przesi si na platformbardziej nowoczesn szczeglnie gdy okazao si, i nowyPascal jest nieporwnanie bardziej dojrzay. Zesp Visual Basica w Microsofcie poczu sizagroony wolnyi ociay Visual Basic 3 nie mg sirwna z Delphi 1.

    By wwczas rok 1995 i Borland wygra apelacjpo przegranym z Lotusem procesie dotyczcym podobiestwa

    Quattro do 1-2-3. Postanawiajc konkurowa z Microsoftem na rynku aplikacji, Borland sprzeda QuattroNovellowi i zabra si za unowoczenianie dBasea i Paradoxa, aby uczyni z nich narzdzia dlaprofesjonalistw dotychczas przeznaczone byy one raczej dla uytkownikw-amatorw. Microsoftoczywicie nie prnowa, prbujc bez zbytniego rozgosu przecign na swoj stron znaczn czprojektantw aplikacji bazodanowych dla Windows tym bardziej, e ujawniy si pewne bdy w Delphi inowej edycji Borland C++.

    Delphi 2Rok pniej Delphi zagocio po raz pierwszy na 32-bitowej platformie Windows 95/ NT, oferujc, oprczzoptymalizowanego, niezwykle efektywnego 32-bitowego kompilatora, poszerzon bibliotek komponentw,znacznie udoskonalone mechanizmy obsugi baz danych, rewelacyjnobsugacuchw tekstowych, wizualne

    dziedziczenie formularzy (Visual Form Inheritance), wykorzystanie technologii OLE i zarazem zgodno z16-bitowymi projektami (oczywicie przy niezbdnym minimum niemoliwych do uniknicia ogranicze,

    jednak co pokazaa praktyka niezbyt uciliwych). Wedug zgodnej opinii programistw-projektantw,Delphi 2 stanowio milowy krok na drodze rozwoju Pascala i narzdzi typu RAD.

    By rok 1996. Kilka miesicy wczeniej uytkownicy Windows otrzymali wersj32-bitow Windows 95 co w historii stanowio najbardziej spektakularny krok od czasu wersji 3.0. Stworzyo to oczywiciezapotrzebowanie na odpowiednie dla rodowiska 32-bitowego narzdzia projektowe. Jednym z nich Borlandpostanowi uczyni swj produkt Delphi. Ciekawostkjest, i pierwotnie nowe narzdzie miao sinazywaDelphi32, co akcentowaoby jego zwizek z platform32-bitow; Borland postanowi jednak zachowa spjnnumeracj, nadajc mu ostatecznie nazw Delphi 2 dla podkrelenia, i Delphi jest produktem w penidojrzaym, i w celu uniknicia znanego na rynku programistycznym tzw. syndromu wersji 1.0.

    Odpowiedzi ze strony Microsoftu by Visual Basic 4, charakteryzujcy si kiepsk efektywnoci, brakiem

    przenonoci pomidzy platformami 16- i 32-bitow oraz kluczowymi wadami w samym projekcie; niezniechcio to jednak licznej rzeszy programistw korzystajcych wci z Visual Basica. Borland z kolei

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    23/473

    28

    prowadzi rozpoznanie rynku aplikacji klient-serwer, opanowanego przez aplikacje w rodzaju PowerBuildera, zzamiarem ulokowania na nim Delphi (jako narzdzia projektowego). Obecna wersja Delphi miaa jednakniewielkie szanse wobec konkurencji w tej dziedzinie.

    Wypracowanie waciwej strategii na rynku klientw korporacyjnych miao dla Borlanda tym wikszeznaczenie, i rynek uytkownikw dBasea i Paradoxa okaza siniewystarczajcy, za zyski z C++ kurczyy sicoraz bardziej. To normalne, i ludzie popeniajbdy; nie unikn ich take Borland, wykupujc firmOpen

    Environment Corporation producenta oprogramowania typu middleware, oferujcego zasadniczo dwaprodukty: pierwszy z nich, bazujcy na technologii DCE, sta si pierwowzorem dzisiejszej implementacjimechanizmu CORBA (Common Object Request Broker Architecture); drugi, oparty na rozproszonej technologiiOLE, zosta usunity w cie przez technologiDCOM.

    Delphi 3Jest rzecz oczywist, i projektowanie kolejnych wersji Delphi nastpowao na podstawie precyzyjnieokrelonych celw projektowych. Tak wic podstawowym zadaniem Delphi 1 byo dostarczenie programistomTurbo Pascala narzdzia umoliwiajcego poczenie ich wieloletniego dowiadczenia z zaletamiprogramowania wizualnego, reprezentowanego wwczas przez czsto przywoywany Visual Basic. Delphi 2 to

    przede wszystkim zacztek obecno

    ci Delphi w

    rodowisku Win32, z zachowaniem elementw kompatybilno

    cize rodowiskiem 16-bitowym i z nowymi elementami bazodanowymi typu klient-serwer, niezbdnymi dla

    aplikacji korporacyjnych.

    W takim kontekcie Delphi 3 postrzega naley przede wszystkim jako implementacj kolejnych technologiitowarzyszcych programowaniu w Windows a wic obiektw COM, kontrolek ActiveX, aplikacji serwerwWWW i wielowarstwowych aplikacji SQL oraz aplikacji uproszczonego klienta ( thin client). Nie od rzeczybdzie rwnie przypomnienie znaczcych usprawnie samego rodowiska projektowego gwnieimplementacji pakietw, konfigurowalnej dla poszczeglnych projektw palety komponentw, usprawnieniaedytora (CodeInsight), debuggera itp. Sama metodologia projektowania aplikacji pozosta a jednak w duejczci taka sama, jak w Delphi 1.

    By rok 1997. Bardzo duo dziao si na rynku narzdzi do tworzenia aplikacji. Najpierw Microsoftzaprezentowa swj Visual Basic 5 z ulepszonym i efektywniejszym kompilatorem, dobr obsug

    COM/ActiveX i wieloma innymi nowociami. Delphi udao sinatomiast zaj znaczcpozycj rynkow izdystansowa zarwno PowerBuildera, jak i Forte.

    Niewtpliw stratdla cyklu rozwojowego Delphi byo przejcie do Microsoftu naczelnego architekta AndersaHejlsberga. Prace jednak nie ustay nowym szefem zespou zosta Chuck Jazdzewski, dotychczaswspkonstruktor Delphi.

    Delphi 4Wrd nowoci kolejnej wersji Delphi wymieni naley midzy innymi kolejne usprawnienia samegorodowiska IDE, czynice prac programisty jeszcze atwiejsz; w pierwszym rzdzie Eksplorator Moduw,uwypuklajcy modularno-hierarchiczn struktur kodu, oraz udoskonalenia edytora w postaci kompletacji

    definicji klas i usprawnionego nawigowania. Zmienio si

    rwnie

    nieco zachowanie okien i paskw narz

    dzio-wych zyskay one ciekawwasnodokowalnoci (docking) usprawniony zosta rwnie zintegrowany

    debugger. Programici baz danych zyskali take narzdzie umoliwiajce tworzenie wielowarstwowych aplikacjitypu klient-serwer na podstawie tak nowoczesnych technologii, jak MIDAS, DCOM, MTS i CORBA.

    By rok 1998. Delphi umacniao sw pozycj rynkow, zyskujc coraz wiksz popularno. Dysponowaowszak niezaprzeczalnym atutem, nieobecnym u konkurencji implementacjspecyfikacji CORBA, ktra byatechnologicznym hitem tamtych czasw.

    Wypuszczenie na rynek Delphi 4 poprzedzone byo wchoniciem przez Borland firmy Visigenic, wczesnegolidera w zakresie technologii CORBA. Wkrtce Borland zmieni swnazwnaInprise, co odzwierciedla miaostrategi zorientowan na oprogramowanie dla przedsibiorstw (enterprise), gwnie na podstawie technologiiCORBA. By jednak zamierzenie to mogo zosta uwieczone sukcesem, tworzenie aplikacji z wykorzystaniemtej technologii powinno by tak proste, jak wykorzystanie technologii COM i tworzenie aplikacji internetowych.

    Z rnych przyczyn nie dokonano jednak w Delphi 4 pe nej integracji technologii CORBA, pozostawiajc tkwestijako element oglnych planw rozwojowych przyszego oprogramowania.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    24/473

    29

    Delphi 5Delphi 5 to duy krok naprzd pod wieloma wzgldami. Po pierwsze, kontynuowano (rozpoczte w Delphi 4)zabiegi majce na celu uproszczenie tych czynnoci zwizanych z IDE i debuggerem, ktre uwaane byy zauciliwe i czasochonne aby uytkownik mg skoncentrowa sina tym co zamierza napisa, bez zbytniegotroszczenia sio tojakto napisa.

    Po wtre, wprowadzono wiele nowych elementw majcych uproci tworzenie aplikacji zwizanych zInternetem m.in. Active Server Object Wizard, komponenty InternetExpress z obsugjzyka XML oraznowe elementy MIDAS-a, czynice go przydatnym dla platformy internetowej.

    Wreszcie powicono mnstwo czasu i wiele wysiku, by wyposay now wersj Delphi w to, conajwaniejsze: stabilno. Niczym dobre wino, dobre oprogramowanie musi dojrze co z pewnocirozumiaBorland, nie spieszc siz nowwersjDelphi i czekajc, a bdzie ona faktycznie gotowa do wypuszczenia narynek.

    Bya druga poowa 1999 roku. Delphi kontynuowao penetracj rynku korporacyjnego, podczas gdy VisualBasic nie przestawa walczy o klientw indywidualnych. Firma powrcia do swej pierwotnej nazwy (Borland),chocia nie sensu stricto po wielu perturbacjach na szczeblu zarzdzania nastpi podzia firmy na sekcjenarzdzi i oprogramowania middleware; odszed Del Yoham, za jego nastpca Dale Fuller z powrotem

    przestawi

    Borland na tory oprogramowania dla projektantw aplikacji.

    Delphi 6Podstawowkwestizwizanz Delphi 6 jest jego zgodno z Kyliksem narzdziem RAD dla Linuksa. Wtym celu Borland opracowa nowbibliotekkomponentw Component Library For Cross Platform, oznaczanakronimem CLX, zawierajc midzy innymi komponentyVisualCLX suce do projektowania interfejsuuytkownika, bazodanowe komponenty DataCLX i komponentyNetCLX dla aplikacji internetowych. Aplikacjeograniczajce sido biblioteki CLX i przenonych elementw biblioteki RTL mogby bez trudu przenoszonepomidzy Windows i Linuksem.

    Nowe komponenty i sterowniki dbExpress stanowi kolejny krok w stron zgodnoci z Linuksem; sjednoczenie realnalternatywdla wyranie starzejcego siju mechanizmu BDE.

    Nie mniej wany aspekt unowoczenie w ostatniej wersji Delphi zwizany jest z jzykiem XML, a dokadniej z wyrantendencjdo zwikszania jego roli w aplikacjach przemysowych i biznesowych. Jzyk ten uatwiaaplikacjom pokonywanie barier zwizanych z rnicami pomidzy rodowiskami projektowymi, architekturamibaz danych, platformami systemowymi, jak rwnie pomidzy poszczeglnymi komputerami w Internecie.Analizujc repertuar komponentw Delphi, natrafimy na obecno XML-a midzy innymi w komponentachbazodanowych, komponentach sucych do tworzenia aplikacji internetowych oraz komponentach usugsieciowych typu SOAP.

    Caoci dopeniajzwyczajowe ju (w kontekcie dotychczasowego rozwoju Delphi) udoskonalenia w zakresieVCL, IDE, debuggera, biblioteki RTL i samego Object Pascala.

    rodowisko zintegrowane Delphi 6Aby unikn ewentualnych nieporozumie terminologicznych w dalszej czci lektury, przedstawiamy narysunku 1.2 rodowisko zintegrowane (IDE) Delphi 6 z wyszczeglnieniem jego najwaniejszych elementw:okna gwnego, palety komponentw, paskw narzdziowych, projektanta formularzy, edytora kodu, inspektoraobiektw, hierarchii obiektw i eksploratora kodu.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    25/473

    30

    Rysunek 1.2. Podstawowe elementy rodowiska zintegrowanego Delphi 6

    Okno gwneOkno gwne Delphi 6 peni swoist rolcentrum sterowania caego rodowiska w terminologii aplikacji

    Windows jest ono gwnym oknem aplikacji. Skada siz trzech podstawowych czci: menu gwnego, paskwnarzdziowych oraz palety komponentw.

    Menu gwne

    Jak w kadej typowej aplikacji Windows, menu gwne Delphi 6 umoliwia wykonywanie podstawowychoperacji, jak np. otwarcie istniejcego lub zainicjowanie nowego projektu, moduu, formularza lub innego pliku,zapisanie wprowadzonych zmian itp. Tutaj take znajdujsipolecenia umoliwiajce przenoszenie danych zapomoc schowka do innych aplikacji oraz uruchamianie aplikacji towarzyszcych, jak np. 32-bitowy TurboDebugger lub kontroler wersji. Wikszo polece menu gwnego posiada swe odpowiedniki w postaciprzyciskw na paskach narzdziowych.

    Paski narzdziowe Delphi

    Dziki paskom narzdziowym moliwe jest wykonywanie niektrych operacji poprzez jednokrotne kliknicieodpowiedniego przycisku, zamiast bardziej kopotliwego wybierania polecenia menu. Zazwyczaj z kadym zewspomnianych przyciskw skojarzona jest podpowied (tooltip), zawierajca krtki opis funkcji zwizanej zdanym przyciskiem. Delphi 6 posiada pi nastpujcych paskw narzdziowych (nie liczc paletykomponentw): Debug, Desktop, Standard,View i Custom. Na rysunku 1.2 widzimy ich domylnposta,ktrmona atwo zmienia za pomocpolecenia Customize z menu kontekstowego kadego z paskw. Oknodialogowe zwizane z tym poleceniem zostao przedstawione na rysunku 1.3 dodawanie nowych przyciskwodbywa sipoprzez przeciganie ich z listy Commands na docelowy pasek, za usunicie przycisku nastpuje

    poprzez wycigni

    cie go poza obszar paska.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    26/473

    31

    Rysunek 1.3. Okno dialogowe konfiguracji paskw narzdziowych

    Moliwoci dostosowawcze paskw narzdziowych nie ograniczajsi jednak do zmiany zestawu przyciskw.Paski te jak rwnie paleta komponentw i menu gwne mog by przemieszczane w obrbie oknagwnego. Naley w tym celu chwyci myszwidoczny z lewej strony uchwyt i przecign pasek w docelowepooenie.

    Gdy przemiecimy pasek narzdziowy poza granice okna gwnego, zaobserwujemy inny ciekawy efekt pasek zostanie wwczas wydokowany z okna gwnego i funkcjonuje jako niezalene okienko narzdziowe.Przykad takich pywajcych paskw narzdziowych przedstawia rysunek 1.4

    Rysunek 1.4. Pywajce paski narzdziowe

    Paleta komponentw

    Paleta komponentw jest odmianpaska narzdziowego o podwjnej wysokoci; jest ona podzielona na strony,na ktrych reprezentowane swszystkie zainstalowane w IDE komponenty VCL oraz kontrolki ActiveX. Zestawi kolejno komponentw na poszczeglnych stronach mona zmienia za pomocpolecenia Properties z menukontekstowego palety lub za pomocpolecenia Component/Configure Palette z menu gwnego.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    27/473

    32

    Projektant formularzyFormularze odpowiedzialne sza ostateczny wygld aplikacji. Pocztkowo okno formularza jest puste; twrcaaplikacji, umieszczajc w nim poszczeglne komponenty, postpuje podobnie jak artysta malarz,urzeczywistniajcy na ptnie swe natchnienie. Rozmieszczenie i rozmiar komponentw mona korygowa zapomocmyszy, a do ewentualnej modyfikacji ich wygldu i zachowania su: inspektor obiektw oraz edytor

    kodu.

    Inspektor obiektwInspektor obiektw umoliwia modyfikacjwaciwoci komponentw oraz zmian ich sposobu reagowania nazdarzenia. Waciwociami (properties) obiektu sdane okrelajce na przykad jego wysoko, szeroko, kolori czcionk, czyli midzy innymi jego reprezentacjgraficznna ekranie.Zdarzenie (event) zwizane jestnatomiast z wystpieniem pewnej sytuacji, na przykad naciniciem klawisza, przesuniciem myszy, czy tenaciniciem jednego z jej przyciskw: reakcja obiektu na poszczeglne zdarzenia opisana jest szczegowo zapomocwydzielonej czci kodu, zwanej procedurobsugi zdarze (event procedure).Inspektor obiektw podzielony jest na dwie czci, zwizane z waciwociami i zdarzeniami, za przeczaniesimidzy nimi zorganizowane jest podobnie, jak wybieranie zakadek notatnika aby wybra zdarzenia lub

    waciwoci, trzeba klikn odpowiednizakadk(tab). Zestaw wywietlanych w danej chwili waciwoci lubzdarze odpowiada aktualnie wybranemu formularzowi lub komponentowi (w oknie projektanta formularzy).

    Poczwszy od Delphi 5 moliwe jest wywietlanie waciwoci (zdarze) na jeden z dwu sposobw: walfabetycznie uporzdkowanym monolicie, bd te w podziale na kategorie. Wygld okna inspektora obiektww kadym z tych dwu przypadkw przedstawia rysunek 1.5.

    Rysunek 1.5. Waciwoci formularza wywietlane alfabetycznie oraz w podziale na kategorie

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    28/473

    33

    Jedn z bardzo wygodnych cech inspektora obiektw i jednoczenie przejawem jego integracji z resztrodowiska jest natychmiastowy dostp do tekstu pomocy zwizanego z wybran waciwoci lubzdarzeniem: wystarczy tylko nacisnF1.

    Edytor koduEdytor kodu jest tym miejscem IDE, gdzie odbywa siproces programowania w cisym tego sowa znaczeniu.Kod aplikacji wpisywany rcznie bd generowany automatycznie podczas wstawiania nowychkomponentw oraz modyfikacji ich waciwoci i zdarze opisuje szczegowo zachowanie siwszystkichkomponentw aplikacji. Poszczeglne moduy kodu dostpne spoprzez szereg zakadek (tabs), umieszczonychw grnej czci okna edytora. Kadorazowe wczenie do aplikacji nowego formularza spowoduje automatycznewygenerowanie nowego moduu kodu. Moliwe jest rwnie niezalene dodawanie moduw kodu niereprezentujcych formularzy. Menu kontekstowe edytora kodu udostpnia szerokgampolece zwizanych zedycj, jak np. zamykanie plikw, ustawianie zakadek (bookmarks) i nawigowanie wrd symboli.

    Wskazwka

    Moliwe jest jednoczesne otwarcie kilku okien edytora kodu za pomocpoleceniaView|New Edit Windowmenu gwnego.

    Eksplorator koduEksplorator kodu uwidacznia w przejrzystej, hierarchicznej postaci wewntrzn strukturmoduu, ktrego kodwywietlany jest aktualnie w oknie edytora kodu zawarto obydwu tych okien (eksploratora i edytora)powizana jest ze sobw cisy sposb: kady z elementw odzwierciedlony jest w relacji jeden do jednego.Oprcz wygodnej nawigacji wrd elementw moduu, moliwe jest take dodawanie nowych elementw oraz

    zmiana nazw elementw istniejcych. Z kadym elementem zawartym w oknie eksploratora kodu zwizana jestgrupa polece, dostpnych za pomocmenu kontekstowego (uruchamianego klikniciem prawym przyciskiemmyszy). Wiele szczegw zwizanych z funkcjonowaniem eksploratora kodu jak sortowanie i filtrowanieelementw okreli mona za pomoc ustawie na karcie Explorer opcji rodowiska (dostpnych zaporednictwem polecenia Tools|Environment Options menu gwnego).

    Hierarchia obiektwOkno odzwierciedlajce hierarchicznzaleno obiektw (Object TreeView) jest nowociDelphi 6. Daje obrazzestawu komponentw formularza, moduu danych lub ramki, w hierarchicznym ukadzie przedstawiajcymzaleno rodzicielski potomny. Moemy atwo zmienia tzaleno przecigajc (w obrbie okna) ikonyreprezentujce komponenty, moemy te przenosi komponenty z palety bezporednio do okna Object TreeView

    (z moliwociwyboru elementu rodzicielskiego).

    Kod rdowy projektuRwnolegle do konstruowania nowego formularza czyli umieszczania na nim kolejnych komponentw odbywa si automatyczne generowanie kodu rdowego odzwierciedlajcego biecy wygld formularza.Najatwiej mona to zaobserwowa w momencie tworzenia nowego projektu.

    W tym celu wybierz z menu gwnego polecenie File|New|Application, a ujrzysz pusty formularz orazszkielet odpowiadajcego mu moduu w oknie edytora kodu, zgodnie z poniszym wydrukiem:

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    29/473

    34

    Wydruk 1.1. Szkielet kodu nowego formularza

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

    type

    TForm1 = class(TForm)

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.DFM}

    end.

    Zauwa, e kod odpowiadajcy formularzowi ma posta moduu; jest to regu w Delphi kademuformularzowi odpowiada jeden modu, lecz nie zawsze jest odwrotnie, poniewa mog istnie moduy niereprezentujce formularzy. Zwr uwagna deklaracjformularza jako typu:

    type

    TForm1 = class(TForm)

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    Jak atwo zauway, formularz jest obiektem o typie pochodnym w stosunku do typu TForm. Stosownekomentarze wskazujmiejsce do wpisania wasnych deklaracji prywatnych i publicznych (wicej szczegwna temat waciwoci obiektw znajdziesz w rozdziale 2.).

    Kolejnym wanym szczegem w przedstawionym wydruku jest dyrektywa

    {$R *.DFM}

    Suy ona do poczenia moduu z reprezentujcym formularz plikiem zasobu o rozszerzeniu .DFM(od DelphiForM). Gwiazdka zastpujca nazwpliku nie spenia tutaj roli szablonu (wildcard), lecz symbolizuje nazwmoduu. I tak, dla moduu UNIT1.PAS napis *.DFMoznacza to samo, co UNIT1.DFM.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    30/473

    35

    Wskazwka

    Poczwszy od Delphi 5, moliwe jest przechowywanie formularzy (w plikach .DFM) w postaci tekstowej(zamiast, jak dotychczas, w postaci binarnej). Domylnie kady nowo tworzony formularz zapisywany jest wpostaci tekstowej, lecz moemy to atwo zmieni, usuwajc zaznaczenie opcjiNew Forms As Text nakarcie Preferences opcji rodowiska (Environment Options). Mimo i tekstowa reprezentacjaformularza jest nieco mniej efektywna od binarnej pod wzgldem rozmiaru i szybkoci odczytu (zapisu), kilkawanych wzgldw przemawia jednak za jej stosowaniem. Po pierwsze, niewielkie zmiany w formularzu mogby dokonywane za pomoczwykego edytora tekstowego, bez koniecznoci uruchamiania Delphi. Po drugie,dane z uszkodzonego pliku tekstowego daj si odzyska znacznie atwiej ni z uszkodzonego plikubinarnego. Wreszcie tekstowe pliki formularzy s atwiejsze w zarzdzaniu dla systemw kontroli wersji.

    Naley jednak pamita o tym, i wersje wczeniejsze od Delphi 5 akceptujwycznie binarnposta plikw.DFM.

    W odrnieniu od wikszoci tradycyjnych aplikacji tworzonych w Turbo Pascalu, prawie ca y kod aplikacjizawarty jest w moduach, natomiast program gwny zredukowany zosta do roli organizacyjnej. Kodprogramu gwnego przechowywany jest w pliku o rozszerzeniu .DPR(od Delphi PRoject), pod nazwodpowiadajcnazwie projektu. Oto przykadowa posta programu gwnego Delphi:

    program Project1;

    uses

    Forms,

    Unit1 in 'Unit1.pas' {Form1};

    {$R *.RES}

    begin

    Application.Initialize;

    Application.CreateForm(TForm1, Form1);

    Application.Run;

    end.

    Powyszy kod rezyduje w pliku o nazwie PROJECT1.DPR.

    Oczywicie, tre kadego moduu jest automatycznie uaktualniana w miarwprowadzania zmian do odnonychformularzy. Tak samo, w miar przybywania nowych moduw, uaktualniana jest dyrektywa uses wprogramie gwnym. atw orientacj w repertuarze poszczeglnych moduw umoliwia okno MenederaProjektu, wywietlane za pomoc poleceniaView|Project Manager. Edycj zawartoci pliku .DPRumoliwia polecenie Project|View Source menu gwnego.

    Notatka

    Kademu formularzowi odpowiada jeden modu kodu, lecz mog istnie moduy nie reprezentujceformularzy. Poza tym do rzadkoci naley modyfikowanie kodu programu gwnego.

    Prosta aplikacjaDo dziewiczego jeszcze formularza dodaj z palety przycisk Button (ten z napisem OK); kod moduu przeobrazisiwwczas do nastpujcej postaci:

    type

    TForm1 = class(TForm)

    Button1: TButton;

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    31/473

    36

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    Jak atwo zauway, przycisk sta si polem obiektu formularza. Nazwa tego pola Button1 ma sensjedynie w kontekcie formularza typu TForm1 (i jego typw pochodnych), tak wic odwoujc sido niej pozazasigiem deklaracji TForm1, musisz uy odwoania kwalifikowanego Form1.Button1 (Form1 jest nazwzmiennej typu TForm1, a pojcie zasigu i jego implikacje zostanwyjanione w rozdziale 2.).

    Przycisk dodany wanie do formularza nie jest obiektem niezmiennym; za pomocinspektora obiektw monamodyfikowa zarwno jego waciwoci, jak i jego sposb reakcji na zdarzenia.

    Aby sio tym przekona, uczy przycisk aktywnym obiektem formularza (kliknij go) i otwrz okno inspektoraobiektw (poprzez wybranie z menu gwnego opcjiView|Object Inspector lub nacinicie klawisza F11).Nastpnie odszukaj pozycjodpowiadajcwaciwociWidth i zmie jej standardowwarto 75 na 100; ponaciniciu klawisza Enter przycisk wyduy si. Nastpnie przejd na stronEvents inspektora obiektw iznajd pozycj OnClick. Po dwukrotnym klikniciu pustego pola zwizanego z t pozycj Delphi

    automatycznie wprowadzi do moduu UNIT1.PAS szkielet procedury obsugujcej zdarzenie kliknicia:

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    end;

    Jest to zaledwie szkielet procedury nie wypenilimy jej jeszcze trecii kliknicie przycisku (w uruchomionejaplikacji) nie wywoa adnych skutkw. Aby przycisk oywi, ka mu dwukrotnie zwikszy swwysokopo kadym klikniciu; uzyskasz to przez wpisanie do szkieletu procedury nastpujcej instrukcji:

    Button1.Height := Button1.Height * 2

    Po skompilowaniu i uruchomieniu aplikacji przekonasz si, e wszystko dziaa zgodnie z Twoimioczekiwaniami.

    Notatka

    Delphi sprawuje cakowit kontrol nad generowanymi procedurami zdarzeniowymi i ich zwizkiem zodnonymi komponentami. W procesie kompilacji usuwane sprocedury jaowe, to znaczy takie, ktrych treogranicza si do dyrektywbegin i end. Jest to czciszeroko zakrojonych optymalizacji, ktre kompilatorjest w stanie wykona w celu zmniejszenia rozmiaru kodu oraz polepszenia jego efektywnoci. Wynika stdjednoczenie wniosek, e niecelowe jest rczne usuwanie z moduw kodu procedur generowanych

    automatycznie i pniej nie wykorzystywanych kompilator sam wykona t czynno, poza tym obecniepuste procedury mogby przecie w przyszoci modyfikowane.

    Gdy przycisk na formularzu stanie si ju nadmiernie duy, moesz zakoczy prac aplikacji i powrci doIDE.

    W tym miejscu warto nadmieni, e opisana metoda programowania procedur zdarzeniowych obiektu nie jestjedyna. Jeeli dane zdarzenie jest zdarzeniem domylnym obiektu, wystarczy klikn go dwukrotnie, cospowoduje udostpnienie odpowiedniej procedury zdarzeniowej. To, ktre zdarzenie obiektu jest jegozdarzeniem domylnym, zaley od konkretnej klasy i tak dla przycisku TButton jest to zdarzenie OnClick,lecz ju np. dla komponentu zegarowego TTimer jest to zdarzenie OnTimer.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    32/473

    37

    Jeszcze o zdarzeniach...Jeeli miae okazj tworzy aplikacje w tradycyjnym rodowisku Windows, z pewnocidocenisz moliwoci,

    jakie oferuje Delphi w dziedzinie obsugi zdarze i programowania sterowanego zdarzeniami. Programowanietradycyjne wymagao od programisty wykonywania wielu czynnoci na piechot podstawow formkomunikacji wewntrz aplikacji Windows s komunikaty, a ich klasyfikowanie, testowanie kontekstu

    (uchwytw, okien, parametrw) spoczywao cakowicie na barkach aplikacji. Komunikatom Windowspowicilimy rozdzia 3., tam wic moesz znale wicej informacji na ten temat.

    W Delphi podstawowformkomunikacji szdarzenia (events); sone wanie przechwyconymi i odpowiednioopracowanymi komunikatami. Na przykad zdarzenie OnMouseDown dotyczce formularza typu TForm, jest wrzeczywistoci obudowanym komunikatemWM_xBUTTONDOWN. Zdarzenie to niesie ze sob informacj oswoich szczegach w tym wypadku o nacinitym przycisku (lewy, rodkowy, prawy). Podobnie ma sirzecz ze zdarzeniem OnKeyDown generowanym w odpowiedzi na nacinicie klawisza kod nacinitegoklawisza i stan klawiszy Shift jest integralnczcizdarzenia, co najlepiej wida w szablonie odpowiadajcejmu procedury zdarzeniowej:

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    begin

    end;

    Delphi, obudowujc komunikat stosownym zdarzeniem, wykonujeca czarn robot dokonuje analizykomunikatu i odczytuje jego parametry. Czsto zdarza si tak, e dane zdarzenie komponowane jest z kilkukomunikatw (dotyczy to m.in. zdarzenia OnMouseDown); zalety Delphi staj si wtedy jeszcze bardziejodczuwalne.

    Niekontraktowy charakter obsugi zdarzeNajwiksz bodaj korzyci wynikajc z mechanizmu zdarze Delphi jest co, co mona by nazwaprogramowaniem niekontraktowym (contract-free programming). Okrelenie to oznacza zwolnienie programistyz obowizku oprogramowywania jakichkolwiek zdarze, innymi sowy ingerencja w domylne szablonyprocedur zdarzeniowych jest cakowicie dobrowolna i podyktowana zazwyczaj chci zmiany niektrychaspektw zachowania sikomponentu.

    Nie mia tego komfortu programista tworzcy niegdy aplikacje dla Windows w sposb klasyczny, czylipoprzez obsug komunikatw. By on bowiem odpowiedzialny za drobiazgow obsug komunikatw, wszczeglnoci za wywoywanie odziedziczonych procedur ich obsugi oraz decyzj, czy po obsueniu danegokomunikatu przekaza sterowanie z powrotem do Windows, czy te dany komunikat cakowicie wygasi.

    Delphi, przejmujc kopotliwobsug komunikatw i konwertujc je na zdarzenia dostpne dla programisty,pozbawia go jednoczenie pewnej elastycznoci. Mimo caej porcznoci mechanizmu zdarze, niektrychzada nie da si zrealizowa wycznie za ich pomoc na przykad zdarzenie OnResize suy jedynie dopowiadomienia aplikacji, i nastpuje zmiana rozmiarw okna; procedura obsugi tego zdarzenia nie dajeadnych rodkw do tego, by zmiantakuniemoliwi.

    Z tego wanie wzgldu Delphi, udostpniajc programicie mechanizm zdarze, nie uniemoliwia mujednoczenie bezporedniego operowania komunikatami. Wymaga to oczywicie pewnej odpowiedzialnoci ioczywicie odpowiedniej znajomoci systemu operacyjnego, chocia i pod tym wzgldem Delphi jest na swjsposb pomocne, bowiem procedury obsugi komunikatw majposta metod obiektu, do ktrego komunikatyte sadresowane. Szczegami bezporedniego operowania systemem komunikatw zajmiemy siw rozdziale 3.

    Mechanizm zdarze uwalnia nas wic od pewnych uciliwoci, jednoczenie nie pozbawiajc moliwychkorzyci; to trochtak, jakby zje ciastko i mie je nadal. Co wspaniaego

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    33/473

    38

    Prototypowanie koduGdy analizuje siDelphi z punktu widzenia pocztkujcego uytkownika, nie sposb oprze siwraeniu, icelowo wyposaono je w rodki znacznie uatwiajce stworzenie pierwszego projektu i oglnie czynicenauk efektywniejsz. rodki te su oczywicie take programistom zaawansowanym, umoliwiajc imszybsze i efektywniejsze tworzenie skomplikowanych nieraz projektw. A to wszystko za sprawtego elementu

    rodowiska, ktry w wielu przypadkach bywa prawdziw zmor programistw mianowicie interfejsuuytkownika.

    Ten aspekt funkcjonowania interfejsu uytkownika, ktry wykorzystujc oglne zasady okrelajce ksztatgotowego programu uatwia doprowadzenie kodu rdowego do ostatecznej postaci, nazywany bywa czstoprototypowaniem kodu. Zauwaye zapewne, w jaki sposb generator kodu rdowego dopisuje do moduukolejne procedury zdarzeniowe: automatycznie generowany jest jedynie szkielet, ktry potem uzupe niany jestprzez programist, stosownie do potrzeb. Tworzone w ten sposb szablony procedur stanowiwanie co naksztat prototypw przyszego kodu. Zadaniem programisty jest przeksztacenie tych prototypw w podanposta docelow, pocztkowo bowiem za efektownym interfejsem graficznym nie kryj siadne konkretnefunkcje: poszczeglne obiekty s guche, gdy procedury okrelajce ich zachowanie, stanowice zaplecze(back-end) aplikacji, sw tej fazie jedynie prototypami. Jednak na co komu nie dziaajca aplikacja, w ktrejpod wystrzaow formnie kryje siadna tre? C, na przykad, wart jest program komunikacyjny, ktrydysponujc efektownymi okienkami i listami wyboru, nie dokonuje de facto adnych pocze?

    Kady, kto w tradycyjnych rodowiskach programistycznych posugiwa si technik prototypowania wewasnym wykonaniu, z pewnoci doceni ten element automatyzmu Delphi. Wysoki stopie owegoautomatyzmu nie odbija si przy tym ujemnie na wygldzie graficznym aplikacji (interfejsie uytkownika).Delphi oferuje bowiem cagamkomponentw i kontrolek realizujcych podstawowe funkcje dialogowe orazprezentacyjne i zapewniajcych aplikacji profesjonalny wygld, wcale nie gorszy o ile nie lepszy od tego,ktry stworzony byby za pomoctradycyjnych narzdzi.

    Rozbudowa zestawu komponentw i

    konfigurowalne rodowiskoOprcz moliwoci tworzenia wasnych komponentw od zera, Delphi umoliwia wprowadzanie nowychkomponentw poprzez modyfikacj komponentw istniejcych z wykorzystaniem mechanizmwdziedziczenia pl, metod i waciwoci obiektw. To jedna z korzystnych konsekwencji obiektowej naturyDelphi. Problematyce tworzenia komponentw powicimy kocowe rozdziay niniejszego tomu.

    Delphi oferuje ponadto moliwo doczania do rodowiska zintegrowanego zewntrznych programw(ekspertw experts), poprzez umieszczenie odpowiadajcych im polece w menu gwnym. Zadanie towykonuje narzdzie Delphi o nazwie Expert Interface. Na przykad programem-ekspertem jest DatabaseForm Wizard, reprezentowany przez jedno z polece menu Database. Szczegom tworzenia programw-ekspertw i integrowania ich ze rodowiskiem IDE powicimy jeden z rozdziaw drugiego tomu niniejszejksiki.

    Top 10 gorca dziesitka IDEJednym z warunkw efektywnego wykorzystania narzdzia jest poznanie wszystkich jego moliwoci. Poniejprzedstawiamy 10 wybranych elementw IDE, ktre programista powinien pozna i nauczy si efektywnie znich korzysta.

    1. Uzupenianie klasNic chyba nie irytuje programistw bardziej ni konieczno wpisywania oczywistego kodu czy nieodnosisz czsto wraenia, i gwnym ograniczajcym Ci czynnikiem jest szybko Twoich palcw? Bymoe kiedy pojawi si inteligentna klawiatura odgadujca Twoje intencje, pki co, Delphi oferuje Ci podobnymechanizm zwany uzupenianiem klas (Class Completion) wystarczy, i napiszesz deklaracj jednego z

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    34/473

    39

    elementw klasy i naciniesz magicznkombinacjklawiszy Shift+Ctrl+C, a Delphi dokona automatycznieodpowiednich wpisw w czci implementacyjnej.

    I tak, na przykad, gdy zadeklarujesz dowoln metod i naciniesz wspomnian kombinacj klawiszy,spowodujesz wygenerowanie szkieletu definicji tej metody. Jeeli z kolei zadeklarujesz waciwo (property)bazujc na polu obiektu i metodzie dostpowej, nacinicie wspomnianej kombinacji spowodujewygenerowanie zarwno deklaracji stosownego pola, jak i deklaracji oraz definicji stosownej metodydostpowej1.

    2. Udostpnianie deklaracji symboluW gszczu setek czy nawet tysicy symboli w kodzie rdowym trudno pamita znaczenie i struktur (typ,rozmiar) kadego z nich. Nieocenion wydaje si wwczas moliwo szybkiego dotarcia do deklaracjiwybranego symbolu co Delphi potrafi byskawicznie uczyni, gdy klikniesz identyfikator symbolu przynacinitym klawiszu Ctrl, wykorzystujc informacjsymboliczntworzonprzez kompilator (pod warunkiemoczywicie, i dla moduu zawierajcego deklaracj symbolu informacja taka jest dostpna). To jeszcze niewszystko Delphi zapamituje indagowane w ten sposb symbole, tworzc co na ksztat stosu historii, poktrego elementach mona atwo si porusza za pomoc klawiszy strzaek pionowych, przy nacinitym

    klawiszu Ctrl.

    3. Od deklaracji do definicjiDelphi umoliwia take szybkie przeczanie sipomidzy deklaracjsymbolu a jego definicj(i vice versa) naley wwczas umieci kursor edytora na identyfikatorze symbolu i nacisn kombinacj klawiszyShift+Ctrl+.

    4. DokowanieIDE umoliwia poczenie kilku niezalenych okien w taki sposb, by funkcjonoway jako poszczeglne panelepojedynczego okna. Gdy sprawimy, e jedno okno stanie si czci innego okna to znaczy, e jezadokowalimy lub zakotwiczylimy. Podczas przecigania okna zdolnego do zadokowania widoczny jest jegokontur, ktry wyranie zmienia swj ksztat w momencie, gdy okno znajdzie si w tzw. docelowej pozycjidokowania (dock site) upuszczenie okna w tym momencie spowoduje faktyczne jego zadokowanie. Edytorkodu umoliwia dokowanie okien przy lewej, dolnej lub grnej krawdzi swego okna.

    Odmian dokowania jest poczenie kilku okien w pojedyncze okno o tzw. strukturze notatnikowej, czylipodzielone na strony reprezentowane przez poszczeglne zakadki; efekt taki uzyskuje sipoprzez upuszczenieprzeciganego okna wewntrz okna docelowego. Za pomocmenu kontekstowego dowolnej z zakadek monawybra ich pooenie (przy dowolnej z czterech krawdzi okna).

    Jeeli chcemy, by dane okno nie posiadao zdolnoci dokowania, naley wyczy opcjDockable w jego menu

    kontekstowym lub trzyma nacinity klawisz Ctrl w czasie jego (okna) przecigania.Poczwszy od Delphi 5, ukad okien w rodowisku IDE moe by zapisany pod wskazannazw temu celowisuy pasek narzdziowyDesktops.

    1

    Aby mechanizm uzupeniania klas mg

    rozr

    ni, czy identyfikator wyst

    puj

    cy w ramach klauzuli

    read(write

    ) jestnazwpola, czy te nazwmetody dostpowej, obowizujpewne dodatkowe reguy np. nazwa pola powinnarozpoczyna siod litery F (przyp. tum.).

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    35/473

    40

    5. Object BrowserW pocztkowych wersjach Delphi do Delphi 4 wcznie przegldarka obiektw (Object Browser) bya wpowszechnej opinii uytkownikw narzdziem do nieciekawym. Sytuacja ta zmienia si w Delphi 5 zgodnie ze sw nazw Object Browser umoliwia odtd wgld w hierarchi obiektw, czego przykadprzedstawia rysunek 1.6; moliwa jest nawigacja pomidzy zmiennymi globalnymi, klasami i moduami,

    moliwy jest rwnie wgld w strukturdziedziczenia, w odwoania do symboli i w zakresy deklaracji. ObjectBrowseruruchamia siza pomocpoleceniaView|Browser menu gwnego.

    Rysunek 1.6. Object Browser w nowym wcieleniu

    6. GUIDTo jedno z niepozornych, aczkolwiek bardzo uytecznych narzdzi: naciskajc kombinacj klawiszy

    Ctrl+Shift+G spowodujemy wygenerowanie (w oknie edytora kodu) unikatowego symbolu GUID. Pozwala tozaoszczdzi czas przy definiowaniu nowych interfejsw.

    7. Wyrnianie skadni plikw C++Analogicznie do wyrniania skadni plikw *.PAS, moliwe jest wyrnianie elementw syntaktycznych

    jzyka C++ w plikach *.CPP i *.H. Realizacja tego nie bya specjalnie skomplikowana, poniewa edytoryDelphi i C++Buildera zostay zbudowane na podstawie tego samego kodu rdowego.

    8. Znaczniki To DoPodczas tworzenia projektu metod od ogu do szczegw naturaln tendencj jest zostawianie pewnychrzeczy do wykonania na pniej. Duym uatwieniem w tym wzgldzie s tzw.znaczniki To Do (dos. do

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    36/473

    41

    zrobienia) dla kompilatora sone zwykymi komentarzami, zaczynaj si jednak od frazy TODO i z punktuwidzenia edytora kodu zawierajwerbalninformacjo zadaniu do wykonania, jak rwnie adnotacje o autorzetej informacji oraz o priorytecie i kategorii odnonego zadania. Przykadowlistznacznikw TODO przedstawiarysunek 1.7.

    Rysunek 1.7. Lista znacznikw TODO

    9. Meneder projektwMeneder projektw pozwala sprawnie zorganizowa pracnad duym projektem, zwaszcza skadajcym siz wielu moduw. Na szczegln uwag zasuguje moliwo przecigania pomidzy projektamiposzczeglnych elementw, jak rwnie ich wymiana za pomoc schowka. Mimo to meneder projektw jestnarzdziem niedocenianym zadziwiajce, jak wielu programistw zapomina wrcz o jego istnieniu.

    Okno menedera projektw otwiera siza pomocopcjiView|Project Manager menu gwnego.

    10. Code InsightTrudno pamita szczegy dotyczce pl, metod i waciwoci obiektw, trudno te wdrowa do deklaracjiklasy kadorazowo, gdy chcemy odwoa sido jednego z jej obiektw. W zwizku z tym Delphi udostpniaswoisty mechanizm podpowiedzi (o nazwie Code Insight) gdy postawimy kropk po identyfikatorzeobiektu (lub rekordu), po krtkiej chwili ujrzymy podpowied zawierajcdeklaracje wszystkich waciwoci,pl, metod i zdarze odnoszcych sido tego obiektu; poszczeglne elementy w ramach podpowiedzi mogbyposortowane wedug nazw lub wedug zakresw deklaracji (wyboru dokonuje si za pomoc menukontekstowego). Gdy okno podpowiedzi zamknite zostanie przedwczenie, mona je otworzy ponownie zapomockombinacji Ctrl+.

    Podobnie rzecz sima z parametrami funkcji, procedury lub metody: wywietlenie podpowiedzi zawierajcejdeklaracj nastpuje wkrtce po napisaniu nawiasu otwierajcego list parametrw. Przedwczenie zamkniteokno mona otworzy ponownie za pomockombinacji Ctrl+Shift+.

    PodsumowanieW niniejszym rozdziale przedstawilimy ogln charakterystyk Delphi i niektre szczegy jego kolejnychwersji take w kontekcie oglnie pojtego programowania w Windows. Kolejne rozdziay obfitowa bdw

    rnorodne szczegy techniczne, wskazane jest zatem przed dalsz lektur nabycie pewnej wprawy wposugiwaniu siIDE i operowaniu jego poszczeglnymi mechanizmami.

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    37/473

    47

    Rozdzia 2.

    Jzyk Object PascalPozostawmy na chwil wizualne aspekty Delphi i przyjrzyjmy si bliej stanowicemu podstaw Delphi

    jzykowi Object Pascal. Poniewa niniejsza ksika przeznaczona jest raczej dla zaawansowanych czytelnikw,z jednej strony ograniczylimy sijedynie do zestawienia najwaniejszych cech tego jzyka, z drugiej natomiastwprowadzilimy pewne porwnania jego elementw z innymi jzykami wysokiego poziomu jak C++, VisualBasic i Java przy zaoeniu, e Czytelnik posiada o nich podstawowwiedz. Obecna wersja Object Pascalarni si znacznie od tej z Delphi 1 czy Delphi 2, zalecamy wic uwane przestudiowanie treci niniejszegorozdziau nie da sibowiem w peni wykorzysta Delphi bez dogbnej znajomoci jzyka, na bazie ktregozostao zbudowane.

    Notatka

    Ilekro wspominamy w niniejszym rozdziale o jzyku C, mamy na myli elementy wsplne dla C i C++. Gdymowa jest o elementach specyficznych dla C++ zaznaczamy to wyranie.

    KomentarzeKomentarz jest najprostszym elementem jzyka programowania stanowi swobodny tekst majcy znaczenie

    jedynie dla czytelnoci programu; przez kompilator jest on cakowicie ignorowany. Object Pascal dopuszcza trzyrodzaje ogranicznikw komentarza:

    nawiasy klamrowe { .. }, znane z Turbo Pascala,

    ograniczniki typu nawias-gwiazdka (* ... *), rwnie wystpujce w Turbo Pascalu,

    podwjny ukonik // (ang. double slash), zapoyczony z jzyka C++.

    Oto przykady poprawnych komentarzy w Object Pascalu:{

    to jest komentarz jzyka Object Pascal,podstawy Delphi 6

    }

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    38/473

    48

    (* to rwnie jest komentarz,tylko z innymi ogranicznikami

    *)

    //Ten komentarz musi zmieci si w jednej linii

    // Ten komentarz zosta, dla odmiany,// podzielony pomidzy kilka linii,// z ktrych kada traktowana jest przez kompilator jako// niezaleny komentarz,// cho przecie dla uytkownika nie ma to adnego znaczenia.

    Za koniec komentarza rozpoczynajcego siod podwjnego ukonika przyjmuje sikoniec linii.

    Ostrzeenie

    Komentarze tej samej postaci nie mogby zagniedane, gdy jest to sprzeczne z reguami skadniowymi

    jzyka. Na przykad w poniszym przykadzie

    { { prba zagniedenia komentarza } }

    pocztkiem komentarza jest oczywicie pierwszy z nawiasw otwierajcych, lecz kocem pierwszy, niedrugi nawias zamykajcy. Nie ma jednak adnych przeszkd, aby zagnieda komentarze rnych typw, naprzykad:

    (* Poniszy komentarz {nadmiar} wskazuje bdn

    instrukcj *)

    { ponisze komentarze w formie (* *) ograniczaj

    tekst do usunicia

    }

    W komentarzu rozpoczynajcym si od podwjnego ukonika znaki { } (* *) mog oczywiciewystpowa bez adnych ogranicze, gdy kocem komentarza nie jest aden wyrniony znak, lecz konieclinii.

    Nowoci w zakresie procedur i funkcjiPoniewa procedury i funkcje stanowinajbardziej uniwersalny element wszystkich jzykw algorytmicznych,zrezygnujemy w tym miejscu z ich wyczerpujcego opisu (ktry Czytelnik znale moe m.in. w dokumentacjiDelphi), koncentrujc sina tych ich cechach, ktre odrniajObject Pascal od Turbo Pascala oraz tych, ktrepojawiy siw pniejszych wersjach Delphi (poczwszy od Delphi 3).

    Puste nagwki wywoaWyjtkowo, opisywana w tym miejscu konstrukcja obecna jest w Object Pascalu ju od Delphi 2, mimo to jest

    jednak na tyle mao popularna, i zasuguje przynajmniej na krtk wzmiank. Ot, wywoujc funkcj lubprocedurnie posiadajcparametrw, moemy uy pary nawiasw na wzr jzyka C lub Java, na przykad:Form1.Show();

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    39/473

    49

    ...R := CurrentDispersion();

    co oczywicie jest rwnowaneForm1.Show;...R := CurrentDispersion;

    Nie jest to moe adna rewelacja jzykowa, lecz z pewnoci drobne uatwienie ycia programistom, ktrzyoprcz Object Pascala uywaj rwnie jzykw wczeniej wymienionych, w ktrych uycie wspomnianychnawiasw jest obowizkowe.

    PrzecianieW Delphi 4 wprowadzono mechanizm przeciania (overloading) procedur i funkcji, umoliwiajcyzdefiniowanie caej rodziny procedur (funkcji), posiadajcych tsamnazw, lecz rnicych sipostaci listyparametrw wywoania, na przykad:

    function Divide(X, Y: Real): Real; overload;begin

    Result := X/Y;

    end;

    function Divide(X, Y: Integer): Integer; overload;begin

    Result := X div Y;end;

    Informacjo przecieniu procedury funkcji jest klauzula overload (jak w powyszym przykadzie).

    Kompilator, analizujc posta wywoania przecionej procedury (funkcji), automatycznie wybierze waciwyjej egzemplarz (zwany czsto jej aspektem), aby jednak zadanie to byo wykonalne, poszczeglne aspektyfaktycznie muszrni siod siebie. Nie jest tak chociaby w poniszym przykadzie:

    procedure Cap(S: string); overload;...

    procedure Cap(var Str: string); overload;...

    Wywoanie

    Cap(S);

    pasuje bowiem do obydwu aspektw kompilator uzna drugi z nich za prb redefinicji pierwszego izasygnalizuje bd.

    Przecianie procedur i funkcji jest chyba najbardziej oczekiwannowociObject Pascala od czasu Delphi 1 i,jakkolwiek bardzo podane i uyteczne, stanowi jedno z odstpstw od rygorystycznej kontroli typw danych(tak charakterystycznej dla pocztkw Pascala). Mamy wszak do czynienia z rnymi procedurami (funkcjami),kryjcymi si pod t sam nazw przypomina to identycznie nazwane procedury (funkcje) rezydujce wrnych moduach. Naley wic korzysta z przeciania rozsdnie, a w adnym wypadku nie naley go

    naduywa.

    Zagadnieniem podobnym do przeciania procedur i funkcji jest przecianie metod, ktrym zajmiemy siwdalszej czci niniejszego rozdziau.

    Domylne parametryTo kolejna nowo wprowadzona w Delphi 4, umoliwiajca uproszczenie wywoa procedur i funkcji poprzezpominicie jednego lub wicej kocowych parametrw listy. W treci procedury (funkcji) parametry te posiadabd wartoci domylne, ustalone w jej definicji. Oto przykad deklaracji procedury z jednym parametremdomylnym:

    procedure HasDefVal( S: String; I: Integer = 0);

    Poniewa drugiemu z parametrw definicja przyporzdkowuje domylnwarto0, wic wywoanieHasDefVal('Hello');

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    40/473

    50

    rwnowane jest wywoaniuHasDefVal('Hello', 0);

    Parametry z wartociami domylnymi muszwystpi w kocowej czci listy nie mogby przemieszanez pozostaymi parametrami, tak wic ponisza deklaracja

    Procedure NoProperDefs( X: Integer = 1; Y : Real);

    jest bdna, poprawna jest natomiast deklaracjaProcedure ProperDefs( X: Integer = 1; Y : Real = 0.0);

    Parametry z deklarowanwartocidomylnnie mogby przekazywane przez referencj (var), lecz jedynieprzez warto lub przez sta (const); wie sito z oczywistym wymogiem, aby parametr aktualny wywoaniaby wyraeniem o dajcej si ustali wartoci. Wymg ten narzuca rwnie ograniczenie na typ parametru,ktremu przypisuje siwarto domyln nie mogw tej roli wystpi rekordy, zmienne wariantowe, pliki,tablice i obiekty. Ograniczeniu podlega take sama warto domylna przypisywana parametrowi moe onaby wyraeniem typu porzdkowego, wskanikowego lub zbiorowego.

    Pewnego komentarza wymaga uycie parametrw domylnych w poczeniu z przecianiem procedur i funkcji.Naley uwaa, aby nie uniemoliwi kompilatorowi jednoznacznego zidentyfikowania waciwego aspektuprocedury (funkcji) przecianej rozrnienie takie nie jest moliwe chociaby w poniszym przykadzie:

    procedure Confused(I: Integer); overload;...

    procedure Confused(I: Integer; J: Integer = 0); overload;...

    varX: Integer;

    begin...Confused(X); // Ta instrukcja spowoduje bd kompilacji

    Mechanizm parametrw domylnych oddaje nieocenione usugi przy unowoczenianiu istniejcegooprogramowania. Zamy na przykad, i nastpujcprocedur

    Procedure MyMessage( Msg:String);

    wywietlajc komunikat w rodkowej linii okna, chcielibymy wzbogaci w moliwo jawnego wskazanialinii (poprzez drugi parametr). Nawet jeeli przyjmiemy, i podanie 0 jako numeru linii oznacza bdzietradycyjne wywietlanie w rodkowej linii, to i tak nie zwolni nas to z modyfikacji wszystkich wywo aproceduryMyMessage() w kodzie programu. cilej byoby tak, gdyby nie mechanizm domylnychparametrw, bowiem poczwszy od Delphi 4 moemy dopuci wywoanie proceduryMyMessage() z jednymparametrem, przyjmujc w takiej sytuacji, i opuszczony, domylny drugi parametr ma warto0:

    Procedure MyMessage ( Msg : String; Line: byte = 0 );

    Wwczas wywoanieMyMessage('Hello', 1)

    spowoduje wywietlenie komunikatu w pierwszej linii okna, natomiast efektem wywoaniaMyMessage('Hello')

    bdzie wywietlenie komunikatu w linii rodkowej. I nie trzeba przy tym niczego zmienia, poza oczywiciesamprocedurMyMessage().

    ZmienneW jzyku C i w Javie moliwe jest deklarowanie zmiennych dopiero w momencie, gdy faktycznie okazuj sipotrzebne, na przykad:

    void foo(void){int x = 1;x++;

    int y = 2;float f;// ... i tak dalej

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    41/473

    51

    }

    Natomiast w jzyku Pascal wszystkie deklaracje zmiennych muszby zlokalizowane przed blokiem kodu danejprocedury, funkcji lub programu gwnego:

    Procedure Foo;varx, y : integer;f : double;

    beginx := 1;Inc(x);y := 2;(*itd.

    *)end;

    Moe sito wydawa nieco krpujce, lecz w rzeczywistoci prowadzi do programu bardziej czytelnego i mniejpodatnego na bdy co jest charakterystyczne dla Pascala, stawiajcego raczej na bezpieczestwo aplikacji nihodowanie okrelonym konwencjom.

    Notatka

    Object Pascal i Visual Basic, w przeciwiestwie do Javy i C, niewraliwe s na wielko liter w nazwachelementw skadniowych. Wraliwo taka zwiksza co prawda elastyczno jzyka, lecz niepomierniezwiksza rwnie prawdopodobiestwo popenienia trudnych do wykrycia bdw. W Pascalu raczej trudnoodczu brak takiej elastycznoci, za to programista ma do du swobod stylistycznw pisowni nazw,na przykad nazwa

    prostesortowaniemetodprzesiewaniazograniczeniami

    staje si bardziej czytelna, gdy jest zapisana w tzw. notacji wielb dziej

    ProsteSortowanieMetodPrzesiewaniaZOgraniczeniami

    Deklaracje zmiennych tego samego typu mogbyczone, na przykad deklaracjvarZmienna1 : integer;Zmienna2 : integer;

    mona skrci do postacivarZmienna1, Zmienna2 : integer;

    Jak wida, po licie zmiennych nastpuje dwukropek i nazwa typu.

    Nadawanie zmiennym wartoci odbywa si w innym miejscu ni ich deklarowanie, mianowicie w treciprogramu. Nowoci, ktra pojawia si w Delphi 2 jest moliwo inicjowania zmiennych ju podczas ichdeklaracji, na przykad:

    vari : integer = 10;P : Pointer = NIL;s : String = 'Napis domylny';d : Double = 3.1415926 ;

    Jest to jednak dopuszczalne wycznie dla zmiennych globalnych; kompilator nie zezwoli na inicjowanie w tensposb zmiennych lokalnych w procedurach i funkcjach.

    Wskazwka

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    42/473

    52

    Kompilator dokonuje rwnie automatycznej inicjalizacji wszystkich zmiennych globalnych bez deklarowanejwartoci pocztkowej, zerujczajmowan przez nie pami; tak wic wszystkie zmienne cakowitoliczboweotrzymujwarto 0, zmiennoprzecinkowe warto 0.0, acuchy stajsi acuchami pustymi, wskanikiotrzymujwartoNIL itp.

    StaeStae (ang. constants) s synonimami konkretnych wartoci wystpujcych w programie. Deklaracja staychpoprzedzona jest sowem kluczowym const i skada si z jednego lub wicej przypisa wartoci nazwomsynonimicznym, na przykad:

    constDniWTygodniu = 7;Stanowisk = 7;TaboretyNaStanowisku = 4;TaboretyOgolem = TaboretyNaStanowisku * Stanowisk;Komunikat = 'Przerwa niadaniowa';

    Zasadniczrnicmidzy Object Pascalem a jzykiem C w zakresie deklaracji staych jest to, e Pascalnie wymaga deklarowaniatypwstaych; kompilator sam ustala typ staej na podstawie przypisywanej wartoci.Ponadto, stae synonimiczne typw skalarnych nie zajmuj dodatkowego miejsca w pamici programu, gdyistniejjedynie w czasie jego kompilacji. Wic na przykad nastpujce deklaracje jzyka C:

    const float AdecimalNumber = 3.14const int i = 10const char *ErrorString = "Uwaga, niebezpieczestwo";

    posiadajnastpujce odpowiedniki w Pascalu:

    const

    AdecimalNumber = 3.14;i = 10;ErrorString = 'Uwaga, niebezpieczestwo';

    Kompilator, ustalajc typ staej, wybiera typy o moliwie najmniejszej liczebnoci. Typ staejcakowitoliczbowej ustalany jest w nastpujcy sposb:

    Tabela 2.1 Ustalane przez kompilator typy staych cakowitoliczbowych

    Warto Typ

    od 2^63 do 2.147.483.649 Int64

    od 2.147.483.648 do 32.769 Longint

    od 32.768 do 129 Smallintod 128 do 1 Shortint

    od 0 do 127 0 .. 127

    od 128 do 255 Byte

    od 256 do 32.767 0 .. 32.767

    od 32.768 do 65.535 Word

    od 65.536 do 2.147.483.647 0 .. 2.147.483.647

    od 2.147.483.648 do 4.294.967.295 Cardinal

    od 4.294.967.296 do 2^631 Int64

  • 7/31/2019 Pacheco Teixeira - Delphi 6 - Vademecum Profesjonalisty - Tom I [Helion-PL]

    43/473

    53

    Ponadto

    stae o wartociach rzeczywistych sstaymi typu Extended;

    stae acuchowe, zalenie od ustawienia przecznika kompilacji $H,salbo acuchami typu ShortString,albo acuchami typuAnsiString;

    dla zbiorw (sets) liczbowych i znakowych rozmiar zajtej pamici wynika bezporednio z ich postaci.

    Aby uzyska wiksz kontrol nad danymi, programista moe jawnie wskaza typ deklarowanej staej, naprzykad:

    constADecimalNumber : Double = 3.14;i : integer = 10;ErrorString : string = 'Uwaga, niebezpieczestwo';

    StaaADecimalNumber jest teraz sta typu Double, bez jawnego wskazania typu byaby natomiast sta typuExtended.

    Jawne wskazywanie typw w deklaracjach staych zasuguje na nieco wicej uwagi. Progra