mikro knjiga delphy 4

Upload: irina-krstevska

Post on 07-Jul-2015

89 views

Category:

Documents


0 download

TRANSCRIPT

MIKRO KNJIGA Delphi 4 Biblija Deo I Poglavlje 1 Upoznavanje sa Delphijem 4 Poglavlje 2 Upoznavanje sa vizuelnim komponentama Poglavlje 3 Upoznavanje sa obrascima Uvod Kao sto cete videti u ovoj knjizi, pomocu Delphija mozete za kratko vreme praviti slozene aplikacije, nezavisno od prethodnog programerskog iskustva. Ako ste tek poceli sa izradom softvera za Windows, dosli ste na pravo mesto. Ako vec znate da radite sa Delphijem ili imate iskustva u programiranju, poglavlja u prvom delu mozete procitati na brzinu, ali ih ipak nemojte preskociti. Ona predstavljaju uvod u tematiku ove knjige i sadrze informacije koje su vam neophodne pre nego sto budete mogli da se pozabavite slozenijim pitanjima. Ako koristite Delphi verzije 1, 2 ili 3 a narocito ako se nosite mislju da predjete na verziju 4 pogledajte odeljak "Putevi razvoja" u poglavlju 1 kako biste uporedili mogucnosti programiranja u razlicitim verzijama Delphija i stekli uvid u mogucnosti Delphija 4. Poglavlje 1 Upoznavanje sa Delphijem 4 U ovom poglavlju Putevi razvoja Pravljenje aplikacija u Delphiju Programiranje pomocu komponenata Uvid u kd Module Explorer Datoteke i oznake tipova datoteka Project Manager Pocetak je uvek najtezi deo upoznavanja sa novim alatom za izradu softvera. (Meni je vec dovoljno tesko i da ujutru ustajem). No, pomocu Delphija aplikacije mozete napraviti za samo nekoliko minuta. U ovom poglavlju cu predstaviti organizaciju knjige i istaci kljucne osobine okruzenja za vizuelno programiranje u Delphiju. Putevi razvoja Postoje vec cetiri generacije Delphija; sa svakim novim izdanjem ovaj proizvod je postajao sve savrseniji. Zbog mnogobrojnih izmena koje je Delphi pretrpeo, neke od starijih aplikacija i komponenata mogu zahtevati da ih obnovite pre nego sto ih budete preveli i upotrebili u Delphiju 4. Ipak, u vecini slucajeva, ove izmene su neznatne. Uspeo sam da prevedem vecinu projekata u knjizi koristeci Delphi 4 bez ikakvih izmena iako sam neke

cak pisao i u prvoj verziji Delphija. Priznajem, primeri aplikacija u knjizi su relativno jednostavni, ali oni ipak obuhvataju vecinu karakteristika programiranja u Delphiju. Samo primeri baza podataka i OLE-a zahtevaju ispravke. Jedan od razloga zbog kojih biste mogli jednostavno azurirati aplikacije Delphija jeste taj sto su klase objektnih interfejsa unapredjene, ali ne i bitno izmenjene. Implementacija objekata je obnovljena, na nekim mestima drasticno, ali kako su njihove klase interfejsa neizmenjene, programi koji ih koriste samo moraju biti ponovo prevedeni kako bi se prebacili u oblik koji moze dalje da se razvija pomocu novije verzije Delphija. Ovo je, na kraju krajeva, jedna od prednosti objektno orijentisanog programiranja. Zahvalno je naci bar jedan primer na kome se vidi da je obecana racunarska tehnologija zaista isporucena. Glavne karakteristike Delphija 1 Prva verzija Delphija, izdata u otprilike isto vreme kad i Windows 95, predstavljala je prvo okruzenje za vizuelno programiranje koje prevodi program u pravi, masinski kd. Iako je Visual Basic (VB) vec postojao, u njemu se stvarao kd koji je radio pod kontrolom prevodioca. Delphi prevodi tekst izvornog koda direktno u naredbe masinskog koda. Delphi 1 stvara 16-bitne aplikacije u masinskom kodu koje rade pod Windowsom 3.1, Windowsom 95 i Windowsom NT. Podrska za 32-bitno programiranje nije postojala do verzije 2. Glavne karakteristike Delphija 1 i dalje postoje uglavnom neizmenjene, iako vec veoma unapredjene. Ove osobine su: Paleta komponenata za vizuelne komponente koje mogu biti ubacene u obrasce Svaka komponenta je i dalje objekat koji se opisuje programski kao klasa Object Pascala. Uredjivac svojstava prozor Object Inspectora koristi se za dodeljivanje vrednosti svojstava komponenata kao sto su zaglavlje, velicina i boja. Uredjivac dogadjaja koji se takodje odabira preko prozora Object Inspectora ubacuje procedure za rad sa dogadjajima za takve objekte kao sto je procedura koja se poziva kada korisnik pritisne dugme. Automatsko stvaranje koda Delphi stvara deklaracije za klase i promenljive, a i procedure za rad sa dogadjajima. Da biste napravili novu aplikaciju, objekte ubacujete u obrasce, odabirate svojstva objekata i stvarate procedure za rad sa dogadjajima, koje ispunjavate kodom svoje aplikacije. Automatsko stvaranje koda je jedna od najboljih osobina Delphija. Datoteke sa masinskim .exe kodom Prevedene aplikacije sadrze potpunu biblioteku vizuelnih komponenata, sto ih delimicno cini potrosacima slobodnog prostora na disku, ali i veoma brzim i uocljivo manjim od slicnih aplikacija izradjenih pomocu biblioteka klasa C++a, koje mogu stvoriti zaista ogromne izvrsne programe. (Delphijev pametni program za povezivanje engl. linker i sazet programski jezik logicno vode do sazete datoteke sa kodom.) Ono sto je najvaznije je to da, za razliku od VB-a, nije potreban prevodilac pri izvrsavanju kako bi se aplikacije Delphija koristile. Smrt pokazivaca Pokazivaci nisu zaista preminuli, oni se i dalje koriste i Object Pascal ih potpuno podrzava. Samo, u vecini slucajeva vise nije neophodno eksplicitno koristiti pokazivace. Osnovni razlog za ovo jeste sto uz potpuno okruzenje za vizuelno programiranje, upravljanje memorijom pre postaje briga postojece biblioteke komponenata nego programera. Stoga je retko potrebno da se memorijski prostor dodeljuje objektima i da se koriste pokazivaci kako bi im se pristupilo. Objekti se stvaraju automatski kad se za njima javi potreba, a na njih upucuju njihove vizuelne predstave. Ovim se pokazivaci prakticno pomeraju u pozadinu, iako tamo i dalje postoje ako se za njima ukaze potreba. Podrska kontrolama Visual Basica (VBX kontrolama) pomocu Delphija 1 ne mozete praviti VBX kontrole, ali mozete koristiti VBX kontrole obuhvatajuci ih komponentama Delphija.

Programiranje baza podataka pomocu vizuelnih komponenata i Borland Database Enginea Mogucnost pisanja potpuno operativnih aplikacija za rad sa bazama podataka verovatno je glavni razlog izuzetnog uspeha Delphija. Dostupna su dva izdanja Delphija 1 osnovno i klijentsko-serversko. Osnovno izdanje je sluzilo za nezavisnu izradu aplikacija za Windows. Klijentsko-serversko izdanje je nudilo dodatne mogucnosti za rad sa bazama podataka, kao i mrezne mogucnosti pristupa glavnim serverima baza podataka iz Delphi aplikacija. Danas Delphi postoji u osnovnoj, profesionalnoj i klijentsko-serverskoj varijanti. Unapredjenje aplikacija napravljenih u Turbo Pascalu i Borland Pascalu u Delphi zahteva obimno preuredjivanje. U stvari, vecina aplikacija mora biti ponovo napisana iz pocetka, uz upotrebu delica originalnog koda. Uz sasvim novo vizuelno okruzenje, biblioteka klasa Visual Component Library Delphija umnogome je nekompatibilna sa ranijim bibliotekama Borland Pascala, ObjectWindows i TurboVision. Iz ovog razloga je prebacivanje postojeceg koda u Delphi 1 izuzetno tesko za vecinu aplikacija. Veza OWL-a sa Delphijem Tehnicki, Delphi 1.0 je bio stoprocentno kompatibilan sa OWL-om i sa programom Turbo Pascal for Windows (TPW). U stvari, OWL ste dobijali uz Delphi 1.0, tako da su programeri mogli da ponovo prevedu svoje programe bez ikakvih izmena. Ipak, prebacivanje OWL aplikacija u Delphi programe koji su koristili nove VCL komponente zahtevalo bi ponovno pisanje vecine aplikacija, sto je vecina programera i uradila.Postoje dva glavna razloga zasto je Borland prekinuo sa OWL modelom. Pre svega, on nije bio dobro prilagodjen programiranju pomocu vizuelnih komponenata, jer nije podrzavao svojstva i metode osnovne sastojke u komponentskom modelu. Osim toga, OWL-u je bila potrebna ogromna operacija da bi prihvatio prelazak na 32 bita, te je Borland ucinio logican, iako bolan potez, tj. odabrao da sahrani OWL i uvede vizuelne komponente uz osobine Object Pascala koje ih podrzavaju. (Zarad prisecanja na stare dane, u nekim poglavljima u ovoj knjizi i na CD-u naci cete moju prvobitnu OWL ikonu, koja je sa mnom jos od TPW 1.0).Na kraju, DOS aplikacije koje su pisane u Turbo Pascalu jednostavno se nadogradjuju do konzolskih aplikacija Win32 uz pomoc Delphija. Ako koristite Delphi 1, deo informacija u ovoj knjizi bice vam od koristi. Ipak, mozda cete morati da menjate veliki broj primera programa pa ce vam, naravno, osobine iz novijih verzija biti nedostupne. Preporucujem da ne koristite Delphi 1 uz ovu knjigu, osim mozda u samom pocetku. Glavne karakteristike Delphija 2 Glavna osobina u Delphiju 2 jeste podrska 32-bitnom programiranju. Ostale nove osobine Delphija 2 obuhvataju: Duge i kratke znakovne nizove konacan raskid sa albatrosom Borland Pascala znakovnim nizom duzine 255 znakova. Ovaj prvobitni tip znakovnog niza i dalje postoji, ali su dugi znakovni nizovi konacno oslobodili programere silnog dovijanja pri smestanju dugackih tekstualnih objekata u memoriju. 32-bitni ceo broj koji je upropastio veliki deo koda zasnovanog na ranijem 16-bitnom tipu celih brojeva. Programeri su shvatili vrednost upozorenja o oslanjanju na nepromenjivu velicinu razlicitih tipova podataka u bajtovima. Citav kd i reference podataka sada su daleke (32-bitni) sto ne utice na programiranje aplikacija, osim u slucajevima kada je neophodan jezik niskog nivoa za izradu programa. Dodeljivanja memorije ogranicena iskljucivo kolicinom slobodne memorije koja moze iznositi i vise megabajta.

Ogromni nizovi koji su indeksirani 32-bitnim indeksnim vrednostima. Izvrsavanje vise niti koda. Potpuna podrska 32-bitnim kontrolama Windowsa kao sto su prikazi TreeView. Uklanjanje podrske za 16-bitne VBX kontrole dodatak podrsci 32-bitnim OCX kontrolama. Unapredjena podrska za povezivanje i ugradjivanje objekata (engl. Object Linking and Embedding OLE). Unapredjen Borland Database Engine i SQL veze. Distribucija u osnovnom izdanju, programerskom izdanju i klijentsko-serverskom izdanju. Zahteva Windows 95 ili NT. Vise se ne moze koristiti pod Windowsom 3.1. Put unapredjenja od Delphija 1 do Delphija 2 poprilicno je direktan, jer su postojeci interfejsi klasa umnogome ostali isti. Kljuc unapredjenja aplikacije jeste 32-bitni nacin razmisljanja i preskakanje svakog koda koji se oslanja na 16-bitne cele brojeve i pokazivace. Svaka funkcija ili procedura koja se zasniva na 16-bitnim pozivima takodje mora da se unapredi u 32-bitnu. Ipak, ove nove osobine su uglavnom automatske za vecinu programera koji za izradu aplikacija koriste vizuelno okruzenje Delphija. U vecini slucajeva, jednostavno ponovno prevodjenje koda kao i komponenata jeste sve sto je potrebno da bi se Delphi 1 unapredio u Delphi 2. Ovo ne vazi za aplikacije Delphija 1 koje koriste 16-bitne VBX kontrole, a koje je Borland obezbedio kao primere koji nisu dostupni u verziji 2. Ovo obuhvata programe koji koriste komponente TBiSwitch, TBiGauge, TBiPict i TChart. Iskustvo u radu sa 16-bitnim VBX kontrolama uci nas da nije mudro koristiti komponente Delphi Sample u pravljenju aplikacija. Mislim iskljucivo na komponente na paleti Samples; sve ostale, kao i kompletni uzorak koda sadrzan u Delphiju, predvidjeni su za upotrebu u konacnom kodu. Ako vasa aplikacija koristi 16-bitne resurse, moracete da ih ponovno prevedete kako bi Delphijev 32-bitni povezivac napravio datoteku zavrsnog .exe koda. Na primer, ako uvozite bitmape kursora, koristite Image Editor da biste napravili novu datoteku 32-bitnog resursa cime slike kursora povezujete sa svojom aplikacijom. Delphi 2 mozete koristiti uz veci deo ove knjige, ali preporucujem da se sto je pre moguce prebacite na verziju 3 ili 4. Glavne karakteristike Delphija 3 Moze se reci da je ova verzija ona koja je ucvrstila Delphi kao vodeci sistem za izradu Windowsovog softvera. Nove osobine predstavljene Delphijem 3 jesu sledece: Podrska paketima koda sastoji se u tome sto omogucava da vise aplikacija dele kd. Kljucna dobit je u ovom slucaju da vise nije neophodno da svaka od prevedenih aplikacija sadrzi celokupan prevedeni VCL, kao sto je to bio slucaj u prethodne dve verzije. Paketi koda ipak zahtevaju od programera komponenata da preurede svoje proizvode i krajnjim korisnicima obezbede pakete za prevodjenje i izvrsavanje. Danas su sve Delphijeve komponente dostupne u paketnom obliku. Brojna unapredjenja VCL-a ukljucujuci nove Win32 komponente. Dostupne su i napredne komponente za izvestaje i grafikone proizvodi nezavisnih proizvodjaca. Ovo su u potpunosti podrzane komponente (u stvari, to su citave biblioteke komponenata) one nisu uzorci. Potpuna podrska ActiveX kontrolama, ukljucujuci i njihovu izradu Delphi 3 dodaje podrsku na masinskom jeziku za interfejse, sto pojednostavljuje upotrebu i stvaranje COM objekata u kodu Delphija. Mogucnost prevodjenja datoteka sa programskim modulima (engl. unit) u datoteke objektnog koda (.obj) dugo trazena zamena koja seze cak do doba Turbo Pascala. Ovo

omogucava prevedenim modulima Delphija da budu uvezeni u druge sisteme za izradu softvera kao sto je C++. Unapredjene klijentsko-serverske komponente i podrska bazama podataka sa visestrukim pristupom (engl. multitiered) uz nove komponente TClientDataset i TRemoteServer Ove komponente su dostupne iskljucivo u klijentsko-serverskom izdanju Delphija 3. Internet i intranet komponente u profesionalnim i klijentsko-serverskim izdanjima Ove komponente komuniciraju sa Web serverom i pojednostavljuju razvoj Web aplikacija olaksavajuci rad programerima u toj meri da ne moraju da se bave HTML-ovim komunikacionim protokolima. Unapredjeno integrisano okruzenje za programiranje (IDE) i uvidi u kd osobine koje su ranije bile dostupne samo u programskim editorima drugih proizvodjaca. Delphijev izgled i nacin rada je, ipak, umnogome neizmenjen. Podrska tipu znakovnih nizova WideString. Nove veze za Borland Database Engine i SQL, za bolji rad na razvoju baza podataka. Standardna, profesionalna i klijentsko-serverska izdanja Vecina komponenata i alata za razvoj baza podataka obezbedjeni su u svim izdanjima. Ipak, klijentsko-serversko izdanje ima alate za izradu aplikacija za rad sa visestruko povezanim (misli se na racunare koji ih koriste) bazama podataka koje koriste SQL servere i lokalne mreze. Profesionalno izdanje pruza mogucnosti za izradu klijentskih aplikacija na lokalnim mrezama i takodje podrzava baze podataka koje su prilagodjene ODBC-u putem upravljackih programa nezavisnih proizvodjaca. U stvari, univerzum Delphija 3 poseduje cetvrtu dimenziju. Ako imate zaista dubok dzep, mozete nabaviti izdanje Delphi Enterprise, koje sadrzi jos alatki pomocu kojih mozete povezati aplikacije Delphija 3 sa resursima podataka preko ujedinjenog sistema koji koristi Borlandovu tehnologiju Entera. Cena? Pa, ako bas morate da pitate... Da biste unapredili aplikaciju Delphija 2 u verziju 3, obicno je dovoljno da je ponovo prevedete bez ikakvih izmena. Ipak, verovatno cete hteti da iskoristite nove osobine kao sto su podrska Internetu i, mozda, ActiveX kontrole. Neke komponente Delphija 3 nalaze se u razlicitim kategorijama na VCL paleti. Druge komponente zamenjene su slicnim, ali ne i identicnim modelima. Na primer, komponenta Header vise nije dostupna na paleti Additional; njena Win32 zamena, HeaderControl, lici na nju ali joj nedostaju neka od svojstava i metoda prethodne komponente. Delphi 3 mozete koristiti uz vecinu informacija i primera aplikacija u ovoj knjizi. Osobine karakteristicne za Delphi 4 jasno su naznacene ili obelezene u tekstu. Glavne osobine Delphija 4 Korisnici bilo koje prethodne verzije Delphija ne bi trebalo da imaju nikakvih problema pri radu sa Delphijem 4. Nove osobine Delphija 4 obuhvataju sledece stavke, od kojih je vecina detaljno obradjena u knjizi: Nov, ali i dalje poznat izgled Delphijeva traka sa precicama i VCL paleta, koje su ranije bile postavljene jedna do druge, sada leze jedna na drugoj. Ovo je bilo neophodno zato sto je broj komponenata i kategorija umnogome premasio prvobitnu velicinu palete. Uz Delphi 4 vise ne morate pretrazivati paletu nalevo i nadesno kako biste pronasli zeljenu komponentu. (Ovo moze biti neophodno u prikazima sa slabijom rezolucijom). Ekstenzije jezika Object Pascal Ovde se radi o nekoliko izmena Object Pascala, ali su sve po svojoj prirodi napredne i prakticno ne mogu stetiti postojecem kodu. Neke od izmena priblizavaju Object Pascal C++-u i narocito su korisne programerima komponenata koji zele da ponude i Delphi i C++ Builder verzije svojih proizvoda. Nove osobine jezika obuhvataju dinamicke nizove, preklapanje metoda, podrazumevane parametre, novi 64-

bitni tip podataka Integer, izmene Pascalovog tipa podataka Real i manje izmene pozivima i parametrima Windowsovih API funkcija. Pogledajte poglavlje 21, kako biste dobili informacije o novim osobinama Object Pascala. Project Manager Stari upravljac projektom u potpunosti je preuredjen u novi model koji podseca na drvo, sto omogucava lakse pracenje obrazaca i datoteka projekta. Osim toga, moguce je praviti grupe projekata, koje mogu automatski prevoditi vise projekata. Grupa projekta je pohranjena kao tekstualna datoteka Make. Ova datoteka moze biti upotrebljena za prevodjenje projekata sa DOS-ove komandne linije uz pomoc ponudjenog korisnickog programa Make. Potrazite odeljak "Project Manager" u ovom poglavlju gde cete naci vise detalja o ovome. Module Explorer Mogucnosti Delphijevog pametnog editora koda udvostrucuju se ovim novim izdanjem. Module Explorer koji se obicno pojavljuje sa leve strane prozora editora koda, ali koji moze biti odvezan i postavljen kao zaseban prozor, pojednostavljuje pretrazivanje unutar datoteke modula Pascalovog izvornog koda. Module Explorer prikazuje sve deklaracije u modulu, koje mozete koristiti kako biste locirali razlicite delove programa u tekstu. Na primer, Module Explorer vam pruza jednostavan nacin da skocite sa deklaracije nekog metoda na njegovu implementaciju. Vise informacija o tome naci cete u odeljku "Module Explorer", kasnije u ovom poglavlju. Spojivi prozori sa alatima Delphijevi prozori sa alatima se mogu privezati. Na primer, mozete odvezati paletu alata ili drugi prozor, kao sto je npr. Module Explorer, i prikazati ga kao zaseban prozor. Takodje mozete privezati prozore kako biste napravili prozore sa alatkama koji sadrze nekoliko kartica sa jeziccima. Na primer, umesto da prozore Breakpoints i Watches prikazete odvojeno, mozete ih smestiti u jedan jedini prozor i onda odabirati pojedinacne alate pritiskajuci jezicke kartica. Jednostavno pritisnite i povucite prozor koji zelite da privezete ili odvezete. Savet: Da biste privezali prozor, pritisnite i povucite ga do ivice drugog prozora, kao sto je editor koda. Nastavite da povlacite sve dok se velicina okvira prozora ne promeni; tada mozete da otpustite taster misa i time zavrsite proces privezivanja. Lakse otklanjanje gresaka Tri nova elementa doprinose laksem otklanjanju gresaka. CPU prozor prikazuje nizi nivo stanja aplikacije, ukljucujuci i vrednosti i oznake stanja registra CPU-a. Osim toga, svoje aplikacije mozete pregledati i otkloniti greske u njima na nivou asemblerskog jezika. Prozor Modules sada prikazuje module aplikacije, listu izvornih datoteka koje su prevedene kako bi cinile modul, kao i listu globalnih simbola i pristupnih tacaka. Treci novi prozor sadrzi prozor Event dnevnika dogadjaja koji prikazuje poruke o kontroli procesa, poruke o tackama prekida, poruke Output-Debug-String i poruke prozora. Delphi 4 sadrzi i napredne mogucnosti za pronalazenje i otklanjanje gresaka kao sto su daljinsko pronalazenje i otklanjanje gresaka, pronalazenje i otklanjanje gresaka vise procesa odjednom, pronalazenje i otklanjanje gresaka u vise programskih jezika odjednom, kao i pronalazenje i otklanjanje gresaka u CORBA objektima. Unapredjenja VCL-a U Delphiju 4 je ponudjeno nekoliko unapredjenja i novih komponenata VCL-a. Ona obuhvataju liste komandi za povezivanje odgovora u funkcionalno slicne objekte kao sto su meniji i dugmad, podrsku za servis aplikacije za Windows NT, spojive komponente TControl i TWinControl za stvaranje spojivih prozora i paleti alata, ogranicenja promene velicine prozora, i druge izmene. Klijentsko-serversko izdanje sadrzi i novi TQueryClientDataSet i druge komponente. Programiranje baza podataka sa visestrukim pristupom Nove komponente poboljsavaju programiranje baza podataka. Veze su unapredjene modulom mconnect i server uticnica (engl. socket server) sada podrzava povratne pozive. Aplikacija servera uticnice moze da

radi i kao servis Windowsa NT. Ostale napredne osobine u vezi sa bazama podataka obuhvataju podrsku za Abstract Data Types (ADT) Oraclea 8 kao polja u tabelama. Podrska modelu komponenata Microsoft Transaction Server (MTS) Klase baza podataka Delphija 4, COM klase, pa cak i ugradjeno Delphijevo okruzenje za programiranje, sada podrzavaju stvaranje, instalaciju, pronalazenje i otklanjanje gresaka COM objekata kojima barata MTS. Podrska je takodje napravljena i za stvaranje, pronalazenje i otklanjanje gresaka, kao i primenu CORBA objekata. Poboljsanje programiranja baza podataka Mnogo cete lakse pregledati baze podataka i menjati tabele uz pomoc iskacucih komandi skupa podataka komponente TTable. Pritisnite desnim tasterom misa objekat TTable kako biste dobili pristup editoru polja i da biste brisali, preimenovali ili azurirali strukturu tabele. Sa ovog iskacuceg menija mozete pokrenuti i Database Explorer. Ako je tabela povezana sa izvorom podataka ovaj postupak ce prikazati tabelu i njene informacije unutar Explorera. Unapredjenja ActiveX kontrola Delphijeva podrska ActiveX kontrolama je unapredjena kako bi obuhvatila interfejse podataka Visual Basica kao i podrsku stvaranju nevizuelnih ActiveX kontrola. Ako imate Delphi 4, mozete koristiti sve informacije iz knjige i pokrenuti sve primere aplikacija koji su ponudjeni. Mozete koristiti bilo osnovni model bilo profesionalni model; ne morate koristiti klijentsko-serversko izdanje, iako cu pomenuti nekoliko njegovih mogucnosti. (Prica se da ce Inprise mozda promeniti tipove izdanja koji su ponudjeni uz Delphi 4, ali ce to imati malo uticaja na informacije u ovoj knjizi). Informacije u ovoj knjizi u vezi sa novim osobinama Delphija 4 mogu vam pomoci da se odlucite hocete li preci na novu verziju, ako to vec niste uradili ili ako niste sigurni da li da se u to upustate. Ako jos nemate Delphi 4, mozete koristiti Delphi 3 uz veliki deo izvornog koda i aplikacija u ovoj knjizi. Pravljenje aplikacija u Delphiju Kao sto je slucaj sa vecinom programa, najbolji nacin da se upoznate sa Delphijem jeste da ga koristite. U ovom odeljku cete isprobati Delphijevo okruzenje za vizuelno programiranje. Sada pokrenite Delphi ili se prebacite u njega. Slika 1-1 prikazuje Delphi koji je pokrenut u Windowsu 95. Ako vas ekran ne izgleda kao sto je prikazano na slici, odaberite komandu File|New Application. Neka dugmad ili prozori se mogu razlikovati, zavisno od verzije programa, operativnog sistema i opcija pri instalaciji. Zavisno od verzije Windowsa i konfiguracije, veliki broj naslovnih linija, ivica, dugmadi i drugih objekata moze se razlikovati u odnosu na one ovde prikazane. Ove razlike su umnogome samo spoljne razlike i, osim ako nije drugacije naznaceno, ne uticu na informacije u knjizi. Delphijevo integrisano okruzenje za programiranje (IDE) ima nekoliko elemenata. Ovi elementi (redosledom prikazanim na slici 1-1) su: Dugmad precica Ovo je dugmad koja se koristi tako sto pokazete na nju i pritisnete za odabrane komande menija. Sta koje dugme radi mozete saznati tako sto cete postaviti kursor misa preko odgovarajuceg dugmeta koje vas interesuje (i necete ga pritisnuti) i posle nekoliko trenutaka ugledacete okvir sa imenom dugmeta. Naviknite se na Delphijevu dugmad precica, koja ce vam na kraju krajeva ustedeti sate i sate vremena provedenog u programiranju, narocito ako ste vesti sa misem. Na primer, iako programe mozete pokrenuti i na druge nacine, najbrze je da pritisnete dugme precice Run (to je dugme koje na sebi ima trougao usmeren nadesno). Neke ikone su u Delphiju promenjene kako bi bolje odgovarale Microsoftovim zahtevima. Na primer, dugme Save project (drugo dugme sleva) sada izgleda kao skup diskova.

Linija menija Ovo je standardni meni u stilu Windowsa. Pregledajte Delphijeve menije kako biste se upoznali sa njima. Delphi 4 dodaje ikone vecini komandi. To su one iste komande prikazane i kao dugmad precica u paleti alata. Paleta komponenata Ova paleta sadrzi ikone koje predstavljaju komponente u VCL-u. Pritisnite dugme na paleti kako biste odabrali vizuelnu komponentu a onda pritisnite misem unutar prozora obrasca da biste ubacili komponentu. Da biste dobili informacije o odredjenoj komponenti, postavite kursor misa preko dugmeta komponente, ali ga nemojte pritiskati. Trenutak kasnije, Delphi ce prikazati okvir koji ce sadrzati ime komponente. Pomerajte misa da biste videli imena drugih komponenata. Ovaj metod koristite kako biste locirali odredjene komponente koje se pominju u knjizi. Kategorije paleta Da biste videli ostale kategorije komponenata pritisnite jedan od jezicaka kartica prikazanih iznad VCL palete. Na primer, pritisnite jezicak kartice Dialogs da biste prikazati Delphijeve komponente okvira za dijalog. Kartice Properties i Events Jednu od ove dve kartice pritisnite na vrhu prozora Object Inspector da biste se prebacili sa prikaza svojstava komponente ili obrasca na prikaz dogadjaja, ili obrnuto. Svojstvo predstavlja osobinu komponente, kao sto je velicina dugmeta ili font tekstualne oznake. Dogadjaj predstavlja radnju, kao sto su pritisak na taster misa ili tastature. Object Inspector Ovaj prozor prikazuje sva svojstva i dogadjaje za jednu ili vise odabranih komponenata ili obrazaca. S vremenom, vi i ovaj prozor cete postati veliki prijatelji; uprkos njegovoj ociglednoj jednostavnosti, prozor Object Inspector je jedan od Delphijevih najznacajnijih programerskih alata. (Savet: Pritisnite taster F11 da biste pozvali prozor Object Inspector ako je sakriven nekim drugim prozorom, ili ako je slucajno zatvoren). Prozor obrasca U vecini aplikacija, obrazac je vizuelna predstava glavnog prozora programa. Ipak, obrazac moze predstavljati i druge prozore na primer, okvir za dijalog ili dete prozor u softveru Multiple Document Interface (MDI, interfejs za rad sa vise dokumenata). Jednostavni programi mogu imati samo jedan obrazac; slozene aplikacije ih mogu imati na desetine. Tackasta mreza vam omogucava da poravnate komponente ubacene u prozor obrasca. Mreza se ne pojavljuje u konacnoj aplikaciji. (Savet: Pritisnite taster F12 jednom ili vise puta da biste locirali ovaj prozor ako je sakriven drugim prozorom.) Module Explorer Novina u Delphiju 4, ovaj prozor prikazuje klase tekuceg modula, listu drugih programskih modula koje dati modul koristi, promenljive, objekte, metode i druge informacije. Da biste skocili do deklaracije ili metoda u prozoru editora koda dovoljno je da pritisnete jednu od stavki u Module Exploreru. Prozor editora koda Ovaj prozor prikazuje izvorni kd u Pascalu povezan sa svakim od obrazaca u aplikaciji. Ovo cu zvati od sada pa nadalje editorom koda (engl. code editor) ili prozorom editora (engl. editor window). Delphi automatski ubacuje vecinu deklaracija i procedura za obradu dogadjaja u ovaj prozor, kome mozete dodati naredbe u Pascalu kako biste izveli radnje za dogadjaje kao sto su komande menija i pritisci na dugmad. Ovaj prozor mozete koristiti i da biste azurirali module Pascala i tekstualne datoteke. Odaberite jednu od otvorenih datoteka pritiskom na jezicke kartica duz gornje ivice prozora editora. Paleta poslova Windowsa 95 Paleta poslova Windowsa 95 prikazuje dugme Start i ikone za trenutno ucitane aplikacije. Da biste aktivirali ucitani program, dovoljno je da pritisnete njegovo dugme na paleti poslova. Pritisnite taster F12 da biste se prebacili iz editora koda u prozore obrazaca, koji se najcesce skrivaju jedni iza drugih. O Delphijevim prozorima, komandama i drugim mogucnostima vise cete nauciti dok budete isprobavali primere aplikacija iz ove knjige. Srescete se i sa jos mnogo drugih prozora kao

sto su Project Manager, Object Browser, Integrated Debugger, Code Editor, Code Insights, Image Editor, Package Editor, Menu Designer i prozori drugih alata. Ipak, dok se ne upoznate sa Delphijem, trebalo bi da uredite svoj prikaz na nacin predstavljen na slici 1-1. Pre nego sto nastavimo, odaberite Tools|Environment Options i odaberite jezicak kartice Preferences. Potvrdite polje Show component captions. Ovo olaksava upoznavanje sa komponentama, iako iskusni programeri mogu da iskljuce ovu opciju. Delphi ne prikazuje oznaku za svaku od komponenata; samo za one koje nemaju upecatljiv vizuelni prikaz. Na primer, kada je odabrana ova opcija, komponenta DataSource (koja se koristi u programiranju baza podataka) oznacena je imenom DataSource1 ili nekim drugim imenom ako ste ga menjali. Bez oznaka komponenata, nevizuelne komponente su prikazane iskljucivo kao ikone, sto otezava njihovo medjusobno razlikovanje. Pripremanje nove aplikacije Prvi korak u stvaranju nove aplikacije jeste njeno imenovanje. Ja volim da ovaj posao obavim cim izaberem File|New Application. Pravovremeno davanje imena projektu sprecava Delphi da snimi projekat u svoje direktorijume pod jednim od standardnih imena datoteka, cime se trosi prostor na disku i stvaraju problemi zbog nacina na koji Delphi koristi ime programa modula pri stvaranju naredbi i deklaracija. Tipican Delphi projekat sastoji se od nekoliko tipova datoteka. Neke datoteke sadrze tekst, druge binarne vrednosti, bit mape i kd. Kako se svaka aplikacija sastoji od velikog broja datoteka, nije lose napraviti zaseban direktorijum na disku za svaki novi projekat. Na taj nacin, jednostavno mozete kopirati datoteke aplikacije na disketu ili na mrezni disk radi cuvanja, a stare aplikacije mozete obrisati jednostavnim brisanjem njihovih direktorijuma. Snimanje projekata u zasebne direktorijume pomaze dobroj organizaciji modula aplikacije. Nikad nemojte snimati vise projekata u isti direktorijum rezultujucu kolekciju datoteka bice teze pretraziti nego siprazje. Da biste nastavili dalje i napravili svoju prvu aplikaciju u Delphiju, uradite sledece: Upotrebite Windows Explorer da biste napravili nov direktorijum (mozete ga zvati i omotnicom), na primer C:\\Projects, za snimanje svojih Delphi projekata. Mozete upotrebiti i neko drugo slovo diska (umesto C:) i drugacije ime. Unutar novog direktorijuma, napravite poddirektorijum pod imenom Hello. Zavrsna putanja, C:\\Projects\\Hello, sada je spremna da prihvati datoteke novog projekta. Prebacite se u Delphi i odaberite File|New Application. Umesto ovoga, mozete odabrati File|New..., pritisnuti jezicak Page i odabrati ikonu Application ali je ovo duzi put do istog mesta. Ako je neki drugi projekat vec ucitan i izmenjen, Delphi vam pruza sansu da taj projekat snimite ili da ga se resite. Pre ubacivanja komponenata ili bilo kakvih izmena novog projekta, odaberite File|Save All (pritisnite tastere Alt+FV), ili pritisnite dugme precice Save All. Sada vidite dva okvira za dijalog, jedan za drugim. Prvi, oznacen kao Save Unit1 As, zahteva ime datoteke izvornog koda glavnog programskog modula. Ja volim da ovu datoteku nazovem Main, sto ukazuje na to da sadrzi izvor glavnog vizuelnog obrasca aplikacije. Da biste ovo uradili, otvorite direktorijum koji ste napravili u prvom koraku i unesite Main u polje File name okvira za dijalog Save. Pritisnite taster Enter ili pritisnite Save kako biste napravili datoteku Main.pas u otvorenom direktorijumu. Ako ne navedete drugacije, Delphi automatski dodaje nastavak .pas imenu datoteke. Nemojte nepazljivo menjati ovaj niti bilo koji drugi nastavak imena datoteke. Delphi prepoznaje tipove datoteka po njihovim nastavcima, pa ako ih promenite, Delphi mozda nece moci da napravi zavrsnu aplikaciju. Delphi potom prikazuje drugi okvir za dijalog, oznacen kao Save Project1 As. Svoje projekte volim da nazivam isto kao i njihove direktorijume. Na primer, u ovom slucaju,

unesite Hello za ime projekta, a onda pritisnite taster Enter ili pritisnite Save. Ovim se stvara glavna datoteka projekta, Hello.dpr, u otvorenom direktorijumu. Delphi automatski daje nastavak .dpr imenu datoteke, sto je skraceno od Delphi Project. Ako Delphi ne zatrazi ime za projekat u 4. koraku, moze se desiti da ste greskom odabrali jednu od preostale dve komande File|Save, sto moze dovesti do toga da ne snimite celokupan projekat. Ako se to desi, jednostavno ponovite korake 3 i 4. U 3. koraku mozete odabrati File|Save Project As... (Alt+FE), ali je meni jednostavnije da snimim projekte i datoteke u vezi sa njima odabirajuci File|Save All (Alt+FV). Da biste dalje razvijali svoju prvu Delphi aplikaciju, nastavite sa uputstvima u sledecem odeljku. Da biste bili sigurni da su datoteke projekta snimljene, odaberite Tools|Environment Options, zatim odaberite jezicak kartice Preferences i ukljucite dve opcije Autosave: Editor files i Desktop. Na ovaj nacin, svaka izmena datoteka projekta automatski se snima svaki put neposredno pre njihovog pokretanja. Ipak, ove opcije nemojte odabirati ako volite da unosite privremene izmene i pokrecete izmenjene programe kako biste isprobali svoje teorije i ideje. Naslov prozora Standardno, Delphi dodeljuje prozoru obrasca projekta Hello naslov Form1. Naslov se pojavljuje na naslovnoj liniji ispod gornje ivice prozora. Da biste izmenili naslov tako da on bude ime programa, postupite na sledeci nacin: Prozor Object Inspectora bi trebalo da na svom vrhu pokazuje Form1: TForm1 ako to nije slucaj, pritisnite unutar prozora obrasca Form1 (to je onaj sa tackastom mrezom). Pritisnite tastere F11 i F12 sto je potrebno da bi se odgovarajuci prozori pojavili na vidiku. Na vrhu prozora Object Inspector (slika 1-1) pritisnite jezicak kartice Properties da biste prikazali svojstva za obrazac programa. Ovim se ujedno odabira prozor Object Inspectora, tako da mozete da menjate svojstva i dogadjaje objekta. Odaberite svojstvo Caption. (Moze se desiti da je ono vec odabrano). Da biste izmenili svojstvo, jednostavno unesite ili odaberite novu vrednost u koloni sa desne strane imena svojstva. Na primer, izmenite vrednost Captiona sa Form1 na Hello Delphi Programmer! Jednostavno krenite da unosite tekst nema potrebe da ga pre toga istaknete. Ne morate ni da pritisnete taster Enter posto zavrsite sa unosom. Ako ipak pritisnete Enter, polje jednostavno ponovo biva istaknuto. Zapazite da se naslov prozora obrasca menja kako vi unosite tekst. Snimite projekat tako sto cete odabrati File|Save All. Kako ste vec obezbedili imena datoteka, Delphi trenutno izvrsava ovu komandu tj. ne prikazuje okvire za dijalog za snimanje datoteka koje ste videli kada ste prvi put napravili projekat. S druge strane, svaki put kada projektu budete dodali nov obrazac, ponovo cete videti jedan ovakav okvir za dijalog ili vise njih kad budete snimali projekat. Kad je projekat u potpunosti snimljen, dugme precice Save All je osenceno. To je brz nacin da vizuelno proverite da li su izmene modula projekta bezbedno snimljene na disk. Da biste zavrsili svoju prvu aplikaciju, nastavite sa uputstvima iz sledeceg odeljka. Pokretanje aplikacije Verovali ili ne, upravo ste zavrsili programiranje svoje prve Delphi aplikacije! Da biste zavrsili proces razvoja i pokrenuli program, uradite sledece: Pritisnite taster F9, ili odaberite komandu Run sa menija Run. Ili, sto je cak i brze, pritisnite dugme precicu Run (trouglic koji pokazuje nadesno). Dok pravite aplikaciju, upotrebite s

vremena na vreme jedan od ovih metoda da biste je pokrenuli i testirali. Program ne mora da bude zavrsen da biste ga pokrenuli. Pogoni u racunaru se pokrecu, disk se obrce, dim kulja iz disk jedinice (pa, dobro, ja sam video oblacic) i nakon nekoliko sekundi, na ekranu se pojavljuje prozor vase prve aplikacije. Na slici 1-2 nalazi se prikaz Helloa u Windowsu 95. Izgled programa se moze razlikovati zavisno od operativnog sistema na kome radite i konfiguracije radne povrsine. Da biste zatvorili aplikaciju, dva puta pritisnite dugme sistemskog menija u gornjem levom uglu prozora, ili jednom pritisnite dugme i odaberite Close sa sistemskog menija. Ako vam se vise dopada da koristite tastaturu, pritisnite Alt+F4 da biste zatvorili aplikaciju i vratili se u Delphi, a mozete i da pritisnete dugme za zatvaranje prozora (x) u gornjem desnom uglu. Iako aplikacija Hello nije nista posebno, ona demonstrira vazan aspekt programiranja u Delphiju. Projekti zapocinju kao svrsene aplikacije. Uporedite to sa nevizuelnim sistemom za razvoj softvera, kao sto je standardna instalacija C++-a koja moze zahtevati da napisete desetine ili vise redova koda pre nego sto zapocnete da testirate program. Programi u Delphiju su spremni za pokretanje u bilo kom trenutku tokom svog razvoja. Posto pokrenete aplikacije unutar Delphija, uvek ih zatvorite pre nego sto se vratite u rezim programiranja. Ako kojim slucajem aplikaciju ostavite otvorenu, necete moci da odaberete veci broj komandi Delphija. Ako Delphi postane problematican narocito ako ne mozete da pregledate prozor Object Inspector pritiskom na taster F11 razlog je verovatno pokrenuta aplikacija koju ste zaboravili da zatvorite. Probajte i sledece: pritisnite taster F9 da biste ponovo pokrenuli Hello. Zapazite da se ovog puta prozor aplikacije pojavljuje brze nego kad ste prvi put pokrenuli program. Delphi prepoznaje da niste menjali projekat, te jednostavno ponovo ucitava datoteku sa kodom aplikacije. Sada zatvorite prozor programa Hello. Osim toga, mozete upotrebiti Windows Explorer da biste pokrenuli Delphijevu aplikaciju. Na primer, otvorite Explorer i potrazite direktorijum C:\\Projects\\Hello. Dva puta pritisnite Hello.exe ili istaknite to ime datoteke i pritisnite taster Enter. Korisnici vaseg programa pokrecu zavrsene Delphi aplikacije jednako kao i ostale Windows programe. Ne zaboravite da zatvorite program pre nego sto nastavite. Windows Explorer se moze koristiti da bi se pokrenulo vise instanci (primeraka) aplikacije. Na primer, mozete pokrenuti dve ili vise kopija aplikacije Hello. Mozete, s druge strane, pokrenuti samo jednu instancu programa unutar Delphija. Da biste pokrenuli vise instanci, morate koristiti Explorer ili komandu Run dugmeta Start u Windowsu. Zatvorite sve instance aplikacije Hello pre nego sto nastavite. Delphi aplikacija je punopravni Windowsov program pokrecete je na isti nacin kao i druge aplikacije. Mozete pritisnuti i povuci ime aplikacije na radnu povrsinu, ili napraviti precicu do datoteke (pritisnite i povucite koristeci desni taster misa), i dva puta pritisnite rezultujucu ikonu. Mazohisti koji vole da sebi otezavaju stvari mogu da unesu punu putanju do programa C:\\Projects\\Hello\\Hello.exe koristeci komandu Run dugmeta Start. Mozete otvoriti i DOS-ov prozor, prebaciti se u direktorijum projekta i uneti Hello kako biste pokrenuli program. Sustina je u tome da su aplikacije napravljene u Delphiju pravi prevedeni programi na masinskom jeziku. Mozete ih pokrenuti kao i drugi softver za Windows. Prevodjenje i povezivanje koda Kada pokrenete aplikaciju pritiskom na taster F9, Delphi prevodi i povezuje program kako bi napravio datoteku sa izvrsnim kodom. Pri tom se desavaju dve kljucne radnje. Prvo, Delphijev prevodilac prevodi tekst programa u binarni kd. Potom, program za povezivanje kombinuje taj kd sa ostalim modulima potrebnim za razlicite zadatke pokretanja i druge

zadatke. Rezultat prevodjenja i povezivanja Delphijevog projekta jeste datoteka potpunog, izvrsivog koda koja ima isto ime kao i projekat, ali nastavak .exe. Da biste preveli i povezali aplikaciju ne pokrenuvsi je, pritisnite tastere Ctrl+F9, ili odaberite komandu Project|Syntax Check. Mozete upotrebiti ove metode kako biste potvrdili da u programu nema gresaka kao sto su manje greske u kucanju. Upotrebite Tools|Environment Options i potvrdite polje Show compiler progress. Ovim se prikazuje okvir za dijalog koji pokazuje razlicite detalje u vezi sa prevodjenjem i povezivanjem, a koji su posebno korisni za uocavanje gresaka u velikim aplikacijama. Za razliku od drugih sistema za vizuelno programiranje, Delphi stvara pravi kd na masinskom jeziku, sto znaci da zavrseni programi ne moraju da imaju prevodioca prilikom izvrsavanja. U prethodnim verzijama Delphija zavrsna .exe datoteka bila je stoprocentno potpuna; to je jedina datoteka koja je bila neophodna korisnicima vaseg programa. To je i dalje tako u Delphiju 4. Ipak, ako pocinjete sa Delphijem 3, veci deo Delphijevog VCL-a (engl. Visual Component Library, biblioteka vizuelnih komponenata) organizovan je u paket koji mogu deliti dve ili vise aplikacija. Zavisno od tipa aplikacija koje napravite, moracete da za krajnje korisnike obezbedite paket za period stvaranja ili paket za pokretanje (odnosno oba). Ovo zaista morate da uradite ako, recimo, pravite posebne komponente za ostale programere u Delphiju. Jos jedan razlog za distribuciju paketa jeste i minimalizacija dupliranog koda koji se prevodi u .exe datotekama. U Delphijevim verzijama 1 i 2, celokupan neophodni kd, ukljucujuci i kd za celokupan VCL, bio je povezan sa kodom svake .exe datoteke. Ako ste imali sest razlicitih aplikacija u Delphiju, njihove datoteke sa .exe kodom sadrzavale su sest zasebnih kopija istih VCL komponenata. Ocigledno, ovakvo gubljenje prostora bilo je nezeljeno, iako su rezultujuce datoteke jednostavne i brze. Danas se mozete opredeliti za distribuciju obicnog koda koristeci pakete koje dele sve aplikacije domacini. Nema nikakvih brzinskih kazni zbog koriscenja paketa (kakve postoje pri upotrebi prevodilaca prilikom pokretanja koje koriste Visual Basic ili Java). Poglavlje 20, objasnjava kako da napravite sopstvene pakete. Paketi su opcioni na nivou pokretanja aplikacija. Ako vam se vise dopada da povezujete citav kd koji se koristi u aplikaciji, odaberite Project|Options..., pritisnite jezicak kartice Packages i iskljucite polje za potvrdu Build with runtime packages. S druge strane, posebne komponente, kao i one koje obezbedjuje Delphi, moraju biti organizovane u pakete. Programiranje pomocu komponenata Pre nego sto nastavite citanje ovog poglavlja, zastanimo da se malo podsetimo. Za sada su vam poznate tri osnovne tehnike u Delphiju: Kako da napravite i snimite nov projekat Kako da izmenite svojstvo poput svojstva Caption u obrascu Delphija Kako da prevedete, povezete i pokrenete aplikaciju pritiskom na taster F9 ili na dugme precice Run (trouglic koji pokazuje nadesno) Ove tehnike cete najverovatnije koristiti u svakoj od aplikacija koju budete pravili. Naravno, programi koji ne rade nista vise osim sto prikazuju naslove nece biti bas visoko kotirani na listama trazenog softvera. Kako biste aplikaciju Hello delimicno uposlili, mozete ubaciti vizuelnu komponentu u prozor programa i pronaci i otkloniti greske u kodu, kao sto to sledeci odeljci objasnjavaju. Dugme precice Open-file otvara pojedinacne datoteke. Da biste ucitali celokupnu aplikaciju Delphija, morate pritisniti dugme precice Open-project, ili odaberite File|Open... da biste

otvorili datoteku projekta koja se zavrsava oznakom tipa .dpr. Mozete odabrati i komandu File|Open Project..., koja se iznenadno pojavila u Delphiju 4 posto je prvobitno nestala u verziji 3. Ubacivanje vizuelnih komponenata Sledece korake pratite kako biste ubacili vizuelnu komponentu u prozor programa Hello: Zatvorite pokrenuti program Hello ako je neophodno i vratite se u Delphi. Odaberite File| Open... ili pritisnite dugme precice Open-project. (Ovo uradite za svaki slucaj, cak i ako je program Hello vec otvoren). Kada se pojavi okvir za dijalog Open Project, izmenite direktorijume ako je neophodno i odaberite Hello.dpr. Pritisnite taster Enter ili pritisnite OK da biste otvorili projekat. Isti metod upotrebite da biste otvorili druge projekte koji se pominju u ovoj knjizi. Ako na sredini poglavlja morate da zastanete kako biste dosli do vazduha, snimite projekat i ponovo ga ucitajte kad budete spremni da nastavite sa radom. Pritisnite jezicak kartice Standard na paleti komponenata, a onda odaberite komponentu Button oznacenu sa Ok. Pomerite kursor na obrazac i pritisnite jednom da biste ubacili objekat Button u prozor. Mesto nije bitno. Proverite da li je objekat Button odabran trebalo bi da oko njega vidite kvadratne rucice. Ako objekat nije odabran, sada ga pritisnite jednom. Standardno, Delphi objekat naziva Button1. Da biste mu dali neko sadrzajnije ime, odaberite svojstvo Name u Object Inspectoru, i unesite CloseButton ili nesto slicno. To napisite kao jednu rec, a ne kao dve izmedju nemojte unositi nikakav prazan prostor. Pritisnite taster Enter. Obratite paznju na to da se svojstvo Caption kao i tekst na dugmetu menjaju u CloseButton. To je normalna pojava, ali cete nekad pozeleti i da se svojstva Name i Caption razlikuju. U ovom slucaju, na primer, odaberite svojstvo Caption i unesite Close. Prozor obrasca bi trebalo da izgleda kao na slici 1-3. Jednom pritisnite objekat CloseButton ako morate da ga odaberete. Na vrhu prozora Object Inspector odaberite karticu Events, koja ispisuje sve radnje koje dugme moze da izvede. Dva puta pritisnite prazan prostor sa desne strane dogadjaja OnClick. Main.pas se pojavljuje u editoru koda, a Delphi postavlja trepcuci kursor izmedju kljucnih reci begin i end. Unesite sledecu naredbu: Close; Upravo ste programirali proceduru za obradu dogadjaja (engl. event handler) za dogadjaj dugmeta OnClick. Proverite da li ste naredbu zavrsili tackom i zarezom. Uporedite tekst u svom prozoru sa onim koji je dat u listingu 1-1. Listing 1-1: Procedura za obradu dogadjaja OnClick objekta CloseButton procedure TForm1.CloseButtonClick(Sender: TObject); begin Close; end; Snimite projekat, a zatim ga pokrenite pritiskom na taster F9. Sada mozete da pritisnete dugme Close da biste zatvorili prozor. Kako je ovo glavni prozor programa, njegovo zatvaranje ujedno zatvara i aplikaciju. Prethodni koraci prikazuju tri vazna aspekta programiranja u Delphiju:

Ubacili ste komponentu Button u prozor obrasca. Izmenili ste svojstva objekta kako biste promenili njegove vrednosti za Name i Caption. Programirali ste jedan od dogadjaja objekta kako biste izveli radnju za vreme pokretanja kao odgovor na odabiranje odgovarajuceg dugmeta. Vase iskustvo u programiranju u Delphiju uglavnom se tice koriscenja objekata, svojstava i dogadjaja. Da biste napravili aplikacije, ubacujete objekte komponente u obrasce i programirate njihova svojstva i procedure za obradu dogadjaja. To je sve! I, usput, Delphijev interfejs kao i sve komponente napisani su pomocu Delphija sto je mocan dokaz da se uz pomoc ovog izuzetnog sistema za razvoj softvera mnogo toga moze postici. Pronalazenje i otklanjanje gresaka u programskim naredbama Programeri mrze pronalazenje i otklanjanje gresaka (engl. debugging) jednako kao sto bastovani mrze korov. Ko ne bi radije pisao nov kd umesto da traci vreme unistavajuci greske u starom? Delphi, naravno, ne moze da spreci pojavljivanje gresaka, ali vam moze pomoci da izbegnete mnoge uobicajene greske time sto vam pruza pametno vizuelno okruzenje koje automatski stvara veci deo vase aplikacije. Nazalost, i dalje ce biti dosta prilika da se pogresi; slagao bih vas kad bih vam rekao da je programiranje u Delphiju uvek i sasvim bez gresaka. Kada greske krenu da izjedaju vas kd, upotrebite Delphijeve komande za pronalazenje i otklanjanje gresaka da biste pokrenuli aplikaciju korak po korak i pregledali vrednosti objekata i promenljivih. Ako se uspori inace vratolomna brzina programa, uzrok problema najcesce postaje ocigledan. Naviknite se na Delphijeve komande za pronalazenje i otklanjanje gresaka sada, kako biste znali da ih upotrebite kad se za to ukaze potreba a verujte mi, ukazace se! Delphijeve komande za pronalazenje i otklanjanje gresaka korisne su i pri ispitivanju kako program radi. Cesto ih upotrebljavajte da biste ispitali primere programa iz knjige, kao i one u Delphijevom direktorijumu Demos. Pratite ove korake da biste saznali kako da koristite neke od Delphijevih mogucnosti za pronalazenje i otklanjanje gresaka: Otvorite projekat Hello ako je neophodno. Ako niste ubacili dugme Close u obrazac, uradite to sada, prateci uputstva iz prethodnog odeljka. Pronadjite proceduru TForm1.CloseButtonClick u prozoru editora Main.pas. Ubacite sledecu naredbu iznad Close kako biste prikazali poruku. Dva reda izmedju begin i end trebalo bi da izgledaju ovako: ShowMessage('Spreman da zatvorim aplikaciju'); Close; Uobicajeno, pritisnucete taster F9 da biste preveli, povezali i pokrenuli program. Ipak, ovog puta cete pritisnuti taster F8 da biste odabrali komandu Step Over sa menija Run u Delphiju. Ovo ce pokrenuti program i zastati kod prve naredbe. (U stvari, zavisno od toga koju verziju Delphija koristite, moze se desiti da se zaustavi na kodu inicijalizacionog programskog modula, na koji je ukazano kljucnom reci end. Ako se ovo dogodi, pritisnite taster F8 jos jednom). Trebalo bi da vidite prozor programa. Kad se on pojavi, pritisnite dugme Close. Umesto da zavrsi program, Delphi ga zaustavlja unutar procedure CloseButtonClick. Ovo je primer postupka korak po korak (engl. single-stepping), sto je jedan od najznacajnijih alata za pronalazenje i otklanjanje gresaka koji se koriste u izradi programa. Pritisnite taster F8 jos dva puta da biste prikazali naredbu ShowMessage i izvrsili je. Na ekranu ce se pojaviti okvir sa dugmetom OK. Pritisnite ovo dugme. Posto ste pritisnuli

taster F8, Delphi ce i ovog puta zaustaviti program na sledecoj naredbi koju treba da izvrsi, Close. Pritisnite taster F9 da biste izvrsili naredbu Close i pokrenuli program do kraja. Posle pritiskanja tastera F8 da biste korak po korak izvrsili jednu ili vise naredbi, najcesce cete nastaviti sa pokretanjem programa na ovaj nacin pomocu tastera F9. Program se zavrsava i iz rezima za pronalazenje i otklanjanje gresaka Delphi se vraca u rezim za programiranje. Jos jedan nacin da se krecete kroz program jeste postavljanje tacke prekida (engl. breakpoint). Kada program dodje do oznacene naredbe, Delphi zaustavlja aplikaciju pre nego sto se ta naredba izvrsi. Pratite sledece korake kako biste postavili tacku prekida i kretali se kroz program: Pomerite trepcuci kursor na naredbu ShowMessage u Main.pas i odaberite Run|Add Breakpoint. Pritisnite dugme New u okviru koji se pojavi, ili jednostavno pritisnite taster Enter. Oznacena naredba je sada istaknuta crvenom bojom (na monohromatskim monitorima ce biti tamno siva). Ili postavite kursor misa sa leve strane naredbe i pritisnite taster misa kako biste postavili tacku prekida. Ovaj metod koristite kako biste brzo postavljali i skidali tacke prekida sa odgovarajucih naredbi. Mozete postaviti vise od jedne tacke prekida na razlicitim mestima u programu, ali probe radi, postavicemo samo jednu. Pritisnite taster F9 da biste pokrenuli program. Kada pritisnete dugme Close, Delphi zaustavlja izvrsavanje na oznacenoj naredbi. Pritisnite taster F8 da biste tu naredbu prosli u jednom koraku i prikazali poruku. Zatvorite okvir sa porukom pritiskajuci dugme OK, pa pritisnite taster F9 da biste program izvrsili do kraja. Ponovo pokusajte korak 2, s tim sto cete ovoga puta pritisnuti tastere Alt+F4 da biste zavrsili program. Kako ovim ne izvrsavate proceduru CloseButtonClick, program se zavrsava ne zaustavljajuci se na tacki prekida. (Savet: ranije verzije Delphija su prikazivale ikonu sa znakom za zaustavljanje kad ste pomerali kursor preko prozora zaustavljenog programa. Novije verzije to vise ne rade.) Uvek probajte da izvrsite program do kraja. Ako to ne mozete da uradite, odaberite Run| Program Reset (Ctrl+F2) i ponovo probajte. Na ovaj nacin mozete preskociti rutine za zavrsetak koje brisu razlicite resurse iz memorije, sto dovodi do postepenog gubitka slobodne memorije pa vas, konacno, tera da izadjete i ponovo pokrenete Windows. Takav je zivot programera, ali srecom, ovaj problem se retko javlja. Da biste postavljali ili uklanjali tacku prekida pomerite kursor skroz ulevo od oznacene naredbe i pritisnite levi taster misa jednom. Ovo je najjednostavniji nacin da postavite i uklonite tacku prekida. Mozete koristiti i komandu View|Breakpoints kako biste dodali, brisali, onesposobili i izvrsavali druge operacije nad tackama prekida. Odaberite sada ovu komandu i pritisnite desni taster misa u listi prozora Breakpoint da biste videli listu ponudjenih komandi. Uklonite tacku prekida sa naredbe ShowMessage odabirajuci komandu Delete sa iskacuceg menija. Kroz celu knjigu, na odgovarajucim mestima, predlazem druge Delphijeve komande za pronalazenje i otklanjanje gresaka. Ipak, nemojte cekati da vam predlozim da prodjete naredbe korak po korak pritiskom na taster F8 i postavljajuci tacke prekida. Koristite Delphijeve mogucnosti za pronalazenje i otklanjanje gresaka dovoljno cesto kako biste istrazili primere aplikacija u knjizi. Zacudice vas sta sve mozete da saznate usporavajuci kd i ispitujuci stanje programa na strateskim pozicijama. Uvid u kd Uvidi u kd (engl. code insight), koji su prvi put predstavljeni u Delphiju 3, automatski dopunjuju kd dok kucate i pruzaju informacije o Delphijevim procedurama, funkcijama i bibliotekama komponenata. Koristeci uvide u kd, mozete napraviti okvire za uobicajene

elemente programiranja kao sto su procedure i petlje. Potom mozete popuniti okvire kako biste ustedeli na kucanju, a mozete i da prikazete tipove parametara za uobicajene procedure i funkcije u editoru koda, kao i svojstva i metode za komponente. Posedovanje ovih iskacucih informacija u editoru koda stedi vam vreme koje provodite u pretrazivanju Delphijevog mreznog sistema za podrsku i stampane dokumentacije ako, naravno, naucite da koristite uvide u kd na pravi nacin. Ovaj odeljak ce vam u tome pomoci. Meni se ponekad cini da uvidi u kd predstavljaju veci problem nego sto olaksavaju rad narocito na sporijim racunarima koji se predugo zaustavljaju prikazujuci prozore za pomoc u vezi sa kontekstom. Sa druge strane, uvide u kd smatram sve vrednijim sto ih vise koristim. Na primer, da bih napravio novu proceduru, dovoljno je da unesem rec procedure i pritisnem tastere Ctrl+J, sto je precica za sablone koda. Ova akcija stvara celokupan okvir za proceduru koji tada mogu da upotpunim. Upotrebom drugih uvida u kd zavrsnim oblikom koda i parametrima koda automatski mogu da dobijem liste imena metoda i tipova argumenata parametara. U sledecim odeljcima, prikazacu primere ovih tehnika. Verovatno zelite da podesite uvide u kd zavisno od svog stila programiranja, ali pre nego sto na to potrosite isuvise vremena, mozda je bolje da se naviknete na standardne postavke. Cetiri glavne zvezde uvida u kd su: Sabloni koda Upotpunjavanje koda Parametri koda Procena izraza pomocu opisa Sledeci odeljci pruzaju savete za upotrebu uvida u kd, kao i predloge za podesavanje ovih vrednih alatki za programiranje. Sabloni koda Pritisnite tastere Ctrl+J u bilo kom trenutku dok koristite editor koda da biste prikazali listu sablona koda. Odaberite sablon koji vam odgovara, i Delphi ce automatski ubaciti sablon u izvorni kd na tekucoj poziciji kursora. Kako postoje brojni sabloni, mozete ustedeti na vremenu time sto cete uneti prvi deo sablona koji zelite pre nego sto pritisnete tastere Ctrl+J. Na primer, da biste ubacili if naredbu u svoj kd, unesite rec if i pritisnite tastere Ctrl+J. Delphi ispisuje cetiri moguca sablona naredbe: if statement ifb if then (no begin/end) else (no begin/end) ife if then else ifeb if (no begin/end) ifs Prva kolona opisuje tip sablona naredbe. Poslednja kolona daje krace ime sablona, koje mozete koristiti kako biste menjali sablon ako je to neophodno. Ako nije neophodno da menjate sablone mozete odmah zaboraviti na kraca imena sablona. Vise detalja o sablonima koda naucicete njihovim koriscenjem nego citanjem o njima, tako da necu pokusavati da dokumentujem veliki broj tipova koji vam stoji na raspolaganju. Potrosite nekoliko minuta odabirajuci razlicite sablone za naredbe koje nameravate najvise da koristite. Meni se neki od sablona cine korisnijim od drugih. Na primer, potrebno mi je vise vremena za pomeranje kursora misa u jednostavnoj if-then-else naredbi nego sto mi treba vremena da direktno unesem kljucne reci samo, ja vrlo brzo kucam. Neki drugi sabloni su mnogo korisniji, narocito sto istovremeno koristim i C++ i ostale programske jezike. Na primer, sabloni koda me podsecaju da izuzeci Object Pascala koriste kljucne reci try i except, dok drugi jezici mogu probati sa try i catch. Uvidi u kd mi pomazu da ne zaboravim ispravnu sintaksu Object Pascala i da smanjim greske pri prevodjenju.

Ne kucajte razmak posle prvog dela sablona koda. Unesite samo prvu rec naredbe na primer if, for ili while i onda pritisnite tastere Ctrl+J. Delphi dodaje razmake u skladu sa dizajnom sablona. Posto se naviknete na koriscenje sablona koda mozda cete pozeleti da izmenite skup koji vec postoji, ili da napravite sopstvene sablone. Probe radi, napravicemo novu proceduru uz odgovarajuce komentare, koja ubacuje okvir za novu proceduru; pre ove ide komentar koji mozete popuniti kako biste opisali svrhu koda. Izvedite sledece korake: OdaberiteTools|Environment Options... i pritisnite jezicak kartice Code Insight. Pritisnite dugme Add... i unesite procedureC kao krace ime sablona, i "procedure (commented)" za opis. Pritisnite unutar prozora editora koda pored oznake, Code:. Unesite sledece redove ili ih sami napisite (vertikalna linija ukazuje na to gde zelite da Delphi postavi tekstualni kursor posto ubacite sablon u izvorni kd programa): {Purpose: | Date : 00/00/00 Author : Tom Duck } procedure (); begin end; Mozete i da dodate jos jedan sablon ili izmenite vec postojece sablone. Pritisnite OK kako biste snimili izmene koje izvrsite. Da biste koristili sablon, unesite P i pritisnite Ctrl+J. Na ovaj nacin ispisacete liste svih sablona koji pocinju sa P. Odaberite novi sablon pod imenom procedure C da biste ga ubacili u editor koda. Ako postoji samo jedan sablon, kada pritisnete tastere Ctrl+J Delphi automatski ubacuje taj sablon u editor koda. Prateci prethodne korake, sada mozete da birate jedan od dva sablona za kljucnu rec procedure. Da biste se vratili na standardne postavke, otvorite okvir za dijalog Code Insight, odaberite novi sablon (procedureC) i pritisnite dugme Delete. Sada mozete da unesete P praceno pritiskom na tastere Ctrl+J da biste ubacili sablon procedure direktno u svoj kd. Slicno tome, mozete da unesete F praceno pritiskom na tastere Ctrl+J da biste ubacili sablon funkcije. Upotpunjavanje koda Delphijev alat za upotpunjavanje koda takodje automatski ubacuje tekst u editor koda, ali se razlikuje od sablona koda po tome sto predlaze odgovarajuce metode, svojstva, dogadjaje i argumente. Ova osobina stedi vreme pre svega tako sto sprecava pojavu gresaka u prevodjenju, mnogo vise nego sto stedi na kucanju. Na primer, mozete dobiti liste svih mogucih metoda za bilo koji objekt VCL klase. Odabirajuci sa ove liste, manja je verovatnoca da cete napraviti gresku sintaksicke prirode, dodeliti neispravnu vrednost, ili pokusati da pozovete metod koji ne postoji. Upotpunjavanje koda mi se cini narocito korisnim kada se programira sa objektima u izvornom kodu. Umesto da trazim imena metoda i svojstava u Delphijevom ugradjenom sistemu za pomoc, samo unesem deo koda i sacekam trenutak kako bi upotpunjavanje koda obavilo svoj deo posla. Tada odaberem metod ili neki drugi pojam koji mi je potreban i nastavim sa kucanjem. Zapamtite, na ovaj nacin ne stedite toliko vreme u kucanju koliko u pretrazivanju (bar je u mom slucaju tako). Pratite sledece korake da biste oprobali upotpunjavanje koda i videli na koji se nacin ono razlikuje od sablona koda:

Zapocnite novu aplikaciju odabirajuci File|New Application. Mozete imenovati i snimiti aplikaciju ako to zelite, ili jednostavno upotrebiti standardna imena. Ubacite komponentu Button sa palete komponenata Standard u prozor obrasca aplikacije. Dva puta pritisnite objekat dugme kako biste napravili standardnu proceduru za obradu dogadjaja. Ovo je uglavnom najbrzi nacin da napravite standardnu proceduru za obradu dogadjaja, iako isto tako mozete koristiti prozor Object Inspectora, kao sto je opisano u slucaju aplikacije Hello u ovom poglavlju. Kursor bi trebalo da je pozicioniran izmedju kljucnih reci begin i end u proceduri Button1Click. Sada upotrebite upotpunjavanje koda kako biste izmenili oznaku dugmeta kada ga pritisnete. Kao prvo, unesite sledece: Button1. Zatim sacekajte nekoliko trenutaka. Nemojte unositi razmak posle tacke. Uskoro cete ugledati predloge upotpunjavanja koda u vezi sa ovim tipom objekta. (Ako predlozi nestanu, obrisite i ponovo unesite tacku da biste ponovo pokrenuli upotpunjavanje koda). Delphi ispisuje sva svojstva, konstruktore, procedure i funkcije za ovaj tip objekta. U ovom slucaju, zelimo da dodelimo nov znakovni niz svojstvu Caption ovog objekta. Pronadjite rec Caption na listi i pritisnite je dva puta kako biste ubacili Caption u izvorni kd. Zadatak zavrsite tako sto cete uneti nov znakovni niz koji dodeljujete svojstvu Caption dugmeta. Na primer, izmenite red izvornog koda na sledeci nacin: Button1.Caption := 'Jao!'; Sada mozete da pokrenete program i pritisnete dugme, koje je promenilo svoj tekst u "Jao!".

Da biste izmenili interval koji prodje u cekanju da se pojavi prozor upotpunjavanja koda, upotrebite Tools|Environment Options..., odaberite karticu Code Insight i povucite klizac Delay na zeljenu vrednost. Na svom glavnom sistemu koristim najbrzu postavku pola sekunde. Na nesto sporijem prenosivom racunaru povecavam ovu vrednost, tako da se iskacuci prozor pojavljuje samo ako namerno sacekam jednu sekundu ili duze. Na ovaj nacin mogu da nastavim sa kucanjem ako ne zelim da vidim prozor, kome moze da zatreba nekoliko trenutaka da se pojavi. Eksperimentisite sa razlicitim postavkama kako biste videli koji vremenski interval najvise odgovara vasem sistemu. Drugi nacin za upotrebu upotpunjavanja koda jeste da pritisnete tastere Ctrl i razmaknicu. Ova akcija otvara prozor upotpunjavanja koda, koji sadrzi popisane dostupne stavke za ovu lokaciju u izvornom kodu. Suprotno od onoga sto mozete procitati u drugoj dokumentaciji, ova operacija ne ispisuje ispravne vrednosti za naredbe dodele ona ispisuje sve objekte u opsegu, koji stoga mogu biti upotrebljeni na neki nacin na ovom mestu u programu. Ovo moze biti korisno u naredbama dodele, ali je korisno i u druge svrhe, recimo prilikom pronalazenje imena neke od globalnih deklaracija. Na primer, meni se ovaj drugi nacin upotrebe upotpunjavanja koda cini izuzetno korisnim prilikom odabiranja izmedju mnogobrojnih lokalnih i globalnih promenljivih. Da bih zapoceo naredbu dodele, pritiskam tastere Ctrl i razmaknicu, a onda odabiram ime za promenljivu sa rezultujuce iskacuce liste. Ovo mi omogucava da koristim duga i opisna imena za promenljive, kao sto je na primer CountOfAliveObjects, i da ih biram sa iskacuce liste umesto da ih svaki put unosim. Ne zaboravite da upotpunjavanje koda mozete koristiti na dva nacina. Jedan zahteva da unesete ime objekta i tacku, a onda sacekate momenat da Delphi prikaze listu svojstava i

metoda objekta. Druga mogucnost jeste da pritisnete tastere Ctrl i razmaknicu u bilo kom trenutku kako biste dobili listu objekata koji su dostupni na ovom mestu u izvornom kodu. Upotpunjavanje koda zahteva od izvornog koda da bude sintaksicki ispravan bar do dela na kome se izvrsava ubacivanje. Ako se javi poruka o gresci "Unable to invoke Code Completion due to errors in source code", proverite da niste mozda izostavili kljucnu rec ili neki drugi vazan element. Da biste videli ovu gresku, pomerite kursor iza kraja izvornog koda modula (posle kraja sa tackom), pa pritisnite tastere Ctrl i razmaknicu. U stvari, u ovom slucaju mozda nece biti nikakvih gresaka prostor iza kraja modula je izvan opsega koda, sto je ujedno i razlog zasto vam se javila poruka o gresci. Postoje dva nacina za podesavanje upotpunjavanja koda. Mozete izmeniti vreme koje je neophodno pre nego sto se pojavi prozor upotpunjavanja koda, a mozete i sasvim da eliminisete upotpunjavanje koda. Upotrebite Tools|Environment Options... i odaberite Code Insight kako biste izvrsili neku od dve navedene izmene. Upotpunjavanje koda cete mozda zeleti da eliminisete na veoma sporim racunarima, kojima moze biti potrebno mnogo vremena da bi prikazali prozor upotpunjavanja koda. U tom slucaju, najbolje je da upotrebite ugradjen sistem za pomoc ili stampanu dokumentaciju, kako biste potrazili informacije o svojstvima, metodima i objektima. Parametri koda Treci tip uvida u kd prakticno u potpunosti onemogucuje prenosenje neispravnih tipova podataka metodama, sto je jedna od najcescih gresaka pri programiranju koju mozete da napravite. (Verujte mi, to dobro znam). Pomocu ove osobine, iskacuci prozor ispisuje sve neophodne parametre za metode koje vas kd poziva. Dovoljno je da posegnete za ovim informacijama kad treba da obezbedite vrednosti argumenata za parametre procedura i funkcija. Eksperiment moze pokazati u kojoj meri su vredni parametri koda. Primenicu i upotpunjavanje koda kako bih demonstrirao zajednicku upotrebu ove dve vrste uvida u kd, koje cete i vi cesto koristiti. Evo koraka: Zapocnite novu aplikaciju i ubacite objekat Button u prozor obrasca. Dva puta pritisnite dugme kako biste napravili standardnu proceduru za obradu dogadjaja za objekat. Izmedju kljucnih reci begin i end unesite Button1. (ne zaboravite da unesete tacku) i sacekajte trenutak. Unesite sc (nije bitno da li su slova velika ili mala) da biste prikazali metod ScaleBy u prozoru upotpunjavanja koda, pa pritisnite taster Enter da biste taj metod ubacili u izvorni kd. (Zapamtite ovu tehniku kada se pojavi prozor upotpunjavanja koda, unesite prva slova metoda ili svojstva, pa pritisnite taster Enter kako biste ga ubacili u program). Dodajte zagradu delimicno formiranoj naredbi Button1.ScaleBy i onda sacekajte trenutak. Trebalo bi da vidite sledecu listu tipova parametara za argumente koje mozete predati metodu ScaleBy: M: Integer; D: Integer Ovaj tekst se pojavljuje u okviru tik ispod kursora teksta. Obratite paznju na to da je prvi parametar ispisan polucrnim fontom ovo ukazuje koji sledeci parametar treba da unesete. Unesite 4 i zarez i ponovo sacekajte trenutak. Sada je parametar D ispisan polucrnim fontom, sto ukazuje na to da se ocekuje vrednost argumenta za ovaj parametar. Unesite 3, zatvorite zagradu i unesite tacku i zarez na kraj naredbe. Kada unesete zagradu, nestaje prozor parametra koda, sto govori da ste obezbedili sve neophodne argumente. Savet: ne zaboravite da unesete zarez a ne tacku i zarez, izmedju stvarnih vrednosti za argumente iskusni programeri u Pascalu verovatno vec znaju za ovo, ali pocetnici mozda ne. Zavrsena naredba bi trebalo da izgleda ovako:

Button1.ScaleBy(4, 3); Sada mozete da pritisnete taster F9 kako biste preveli i pokrenuli program. Kao da je izaslo iz Alise u zemlji cuda, dugme se povecava svaki put kad ga pritisnete. To se desava zato sto metod ScaleBy skalira vizuelnu komponentu u odnosu na M podeljeno sa D, sto je u ovom slucaju 4/3 ili otprilike 1,33 puta. Iskacucem prozoru parametra koda mozda ce biti neophodno nekoliko trenutaka da se pojavi, narocito u slucaju procedura koje zahtevaju brojne argumente. Kao i u slucaju upotpunjavanja koda, mozete promeniti vreme zastoja ove opcije, ili je u potpunosti onesposobiti pomocu komande Tools|Environment Options... Procena izraza pomocu opisa Ovaj uvid u kd moze zvucati egzoticnije nego sto zaista jeste, ali time ne zelim da kazem da nije koristan. U stvari, ova osobina moze biti najcesce koriscena prilikom testiranja koda. Da biste koristili opis za procenu izraza, morate pokrenuti program u rezimu za pronalazenje i otklanjanje gresaka. Ovo mozete uraditi na nekoliko nacina, a dva najcesca su postavljanje tacke prekida ili pokretanje koda u rezimu korak-po-korak pritiskom na taster F8. Kada ovo uradite i zaustavite program na nekom mestu tokom njegovog izvrsavanja, pomerite kursor preko promenljive, kako biste videli iskacuci prozor sa njenom vrednoscu. Ovo je izuzetno korisno kada istrazujete promenljive tokom pronalazenja i otklanjanja gresaka. Promenljiva mora biti u opsegu na toj tacki izvrsavanja programa promenljive deklarisane kao lokalne za metode izvan onog na kom se program zaustavio nisu dostupne ispitivanju (u stvari, te promenljive ne postoje u memoriji). Da biste videli kako ova osobina radi, pratite sledece korake: Napravite novu aplikaciju, ubacite objekat Button, dva puta ga pritisnite i ubacite sledecu naredbu u metod Button1Click: Button1.Caption := 'Joj!'; To je ista naredba koju ste uneli u primeru upotpunjavanja koda u ovom odeljku. Pre nego sto pokrenete aplikaciju, postavite tacku prekida na prethodnu naredbu. To cete uraditi tako sto cete pritisnuti sa leve strane reda, ili cete koristiti komandu Run|Add Breakpoint... Pritisnite taster F9 da biste pokrenuli aplikaciju, a onda pritisnite dugme. Ovim zaustavljate program na naredbi na kojoj ste postavili tacku prekida. Kako je program zaustavljen u rezimu rada za pronalazenje i otklanjanje gresaka, sada mozete upotrebiti opis za procenu izraza kako biste ispitali promenljive. Pomerite kursor preko reci Caption. Sacekajte nekoliko trenutaka i Delphi ce prikazati trenutno dodeljenu vrednost za ovo svojstvo. U malom okviru videcete: Button1.Caption = 'Button1'; Caption je postavljeno na ovaj znakovni niz zato sto program jos nije izvrsio naredbu na tacki prekida. To cete uraditi tako sto cete pritisnuti taster F9 da biste nastavili sa radom programa, a potom pritisnuti dugme po drugi put. Kada se program ponovo zaustavi na tacki prekida, pomerite kursor iznad reci Caption, koja sada prikazuje novu vrednost, dodeljenu poslednji put kad je naredba izvrsavana. Kao i u slucaju upotpunjavanja koda i parametara koda, mozete izmeniti vreme koje je neophodno da se opis za procenu izraza pojavi, ili u potpunosti onesposobiti ovu karakteristiku koristeci komandu Tools|Environment Options... Ipak, ne mogu da se setim nijednog razloga zasto biste ovu korisnu osobinu u potpunosti onesposobili.

Procena izraza pomocu opisa najbolje radi ako su iskljucene optimizacije prevodioca, jer kad su one ukljucene, prevodilac moze preurediti kd tako da sistemu za pronalazenje i otklanjanje gresaka pronalazenje pozicije promenljivih u memoriji moze biti otezano ili onemoguceno. Da biste onesposobili optimizacije, odaberite Project|Options... i izaberite karticu Compiler. Pod Code generation, iskljucite polje Optimization. Kako biste podesili da ovakvo stanje bude standardna postavka, potvrdite polje Default na dnu prozora za dijalog pre nego sto pritisnete OK. Postarajte se da osposobite optimizaciju pre nego sto prevedete zavrsni oblik programa. Module Explorer Module Explorer, nova karakteristika u Delphiju 4, umnogome pojednostavljuje snalazenje medju datotekama izvornog koda aplikacije. Module Explorer daje strukturu simbola vaseg programa. Ova struktura sluzi da dokumentuje izvor i kao pomoc pri pronalazenju odredjenih deklaracija. Slika 1-4 prikazuje Module Explorer sa slike 1-1. Module Explorer je prikazan na levoj strani editora koda. On prikazuje strukturu tipova, klasa, svojstava, metoda, globalnih promenljivih i globalnih rutina aktivnog programskog modula. Module Explorer ispisuje i imena programskih modula koje tekuci modul koristi. Da biste prelazili iz prozora Module Explorera u editor koda i obratno, pritiskajte Ctrl+Shift+E. Istaknite bilo koju stavku u prikazu strukture, i tekstualni kursor ce skociti na deklaraciju tog simbola u editoru koda. Meni je ovo izuzetno korisno prilikom odredjivanja implementacije metoda deklarisanog u odeljku za interfejs modula na primer, deklaracija metoda unutar klase. Module Explorer podrzava pretragu prema prirastaju. Unesite prva slova simbola koji zelite da nadjete. Ako je taj simbol deklaracija programa, ovim cete postaviti kursor u editor koda. Privezivanje i odvezivanje Prozor Module Explorera mozete privezati ili odvezati. Da biste ga odvezali, pritisnite i povucite misem gornju ivicu prozora. Videcete debelu konturnu liniju, koju mozete povuci do bilo kog odredista. Pustite taster misa da biste prikazali Module Explorer u zasebnom prozoru. Ovo mozete da uradite kad, na primer, radite na prikazu niske rezolucije. U tom slucaju, standardnom Module Exploreru editor koda moze biti mali. Na prikazu 1024768 vise volim da mi je Module Explorer privezan na originalnoj lokaciji. Posto ga odvezete, prozor Module Explorera mozete da otvorite odabirajuci View|Module Explorer. Pritiskom na Ctrl+Shift+E dok je editor koda jos uvek aktivan takodje cete u prvi plan prizvati prozor Module Explorera ispred svih ostalih prozora. Kako biste prozor Module Explorera privezali na prvobitnu poziciju, pritisnite i povucite misem ivicu prozora nalevo od editora koda. Nastavite sa povlacenjem dok se debela linija ne pretvori u tanku. Otpustite taster misa kako biste zavrsili proces privezivanja. Module Explorer mozete jos privezati i sa desne strane prozora editora koda. Uhvatite gornju ivicu misem i povucite prozor Module Explorera na bilo koju stranu editora. Nastavite sa povlacenjem sve dok se debela linija ne pretvori u tanku, pa onda otpustite taster misa. Kada je editor koda maksimiran, debela bordura za privezivanje prozora moze nestati. Da biste zavrsili proces privezivanja u ovom trenutku mozete otpustiti taster misa. Upotpunjavanje klase Ako ste vec programirali u Delphiju verovatno ste mnogo gresili prilikom unosenja deklaracija metoda klase i njihove implementacije u odgovarajucim formatima. Kada ja ovo

radim, gotovo uvek zaboravim da obezbedim ime klase i tacku u implementaciji, ili slucajno kopiram ovaj tekst u deklaraciju. Obe greske vode do izludjujucih poruka o greskama prilikom prevodjenja. Upotrebom osobine upotpunjavanja klase Module Explorera koju mozete smatrati novim alatom uvida u kd editor koda moze napraviti kostur metoda za bilo koju deklaraciju. Da biste ovo isprobali, pokrenite novu aplikaciju, a onda izvedite sledece korake: Ubacite objekat Button u glavni obrazac programa. Dva puta pritisnite Button1 kako biste napravili metod za dogadjaj OnClick objekta. Pritisnite TForm1 u Module Exploreru. Ovim cete pomeriti tekstualni kursor u deklaraciju klase TForm1. Locirajte kljucnu rec private i tik ispod nje unesite sledecu deklaraciju procedure, koja proglasava Subroutine clanom klase TForm1: procedure Subroutine; Da biste zavrsili kd, morate obezbediti implementaciju stvarnog metoda. U ovom trenutku priskace u pomoc upotpunjavanje klase. Postavite kursor bilo gde unutar deklaracije klase TForm1 a onda pritisnite Ctrl+Shift+C. Delphi stvara kostur za sve deklarisane metode koji nemaju implementaciju. Uz samo jedan neimplementiran metod, kursor je postavljen izmedju kljucnih reci begin i end Subroutinea. Unesite dve naredbe na sledeci nacin kako biste zavrsili metod: procedure TForm1.Subroutine; begin ShowMessage('Ready to exit'); Close; end; Pronadjite proceduru za obradu dogadjaja OnClick iz 2. koraka. Da biste ovo brzo izveli koristeci Module Explorer, pritisnite Button1Click pod metodima klase TForm1. Unesite sledecu naredbu izmedju kljucnih reci begin i end. Zavrseni metod bi trebalo da izgleda ovako: procedure TForm1.Button1Click(Sender: TObject); begin Subroutine; end; Pritisnite taster F9 da biste preveli i pokrenuli program. Kada pritisnete dugme, procedura za obradu dogadjaja OnClick poziva Subroutine, koji prikazuje poruku i zavrsava program. Upotpunjavanje klase radi i u obrnutom smeru. Unesite bilo koju proceduru ili funkciju u odeljak za implementaciju modula. Pomerite kursor bilo gde unutar procedure ili funkcije, a zatim pritisnite tastere Ctrl+Shift+C da biste napravili deklaraciju za taj metod u naznacenoj klasi. Da biste ovo probali, obrisite deklaraciju klase iz odeljka private u klasi TForm1. Upotrebite Module Explorer kako biste skocili na implementaciju Subroutinea i pritisnite tastere Ctrl+Shift+C. Ako u metodu ne postoji nijedan prototip deklaracije, Delphi ga dodaje u ispravnom formatu odeljku private date klase. (Ovu deklaraciju mozete pomeriti u odeljke protected ili public ako se za tim ukaze potreba). Kretanje po modulima Module Explorer pruza jos jedan nacin da u editoru koda naizmenicno imate deklaraciju metoda u klasi i njegovu implementaciju. Sa kursorom postavljenim na bilo kojoj deklaraciji metoda, pritisnite tastere Ctrl+Shift+strelica nadole kako biste se prebacili na

implementaciju tog metoda. (Izgleda da nije vazno koju strelicu pritiskate, jer je ovo karakteristika za prebacivanje iz jednog stanja u drugo, te je pravac nebitan.) Napomena u Delphijevoj datoteci za pomoc ukazuje na to da ove tastere mozete koristiti kako biste se prebacivali iz odeljka za interfejs u odeljak za implementaciju unutar modula i obrnuto, ali meni to nije uspelo. Mozda ce ovo biti popravljeno u vasoj verziji Delphija. Datoteke i nastavci imena datoteka Sledeci odeljci opisuju sadrzaj velikog broja tipova datoteka koje Delphi stvara za aplikaciju. Objasnicu i koje se datoteke mogu bez brige obrisati iz direktorijuma projekta zarad ustede prostora na disku. Datoteke izvornog koda Kada ubacite komponente u obrazac i izmenite obrazac, i svojstva i dogadjaje komponenata, Delphi pise tekst vaseg programa u Object Pascalu. Ovaj tekst se naziva izvorni kd (engl. source code). U bilo kom trenutku razvoja aplikacije mozete pregledati datoteke sa izvornim kodom programa, a mozete ih i odstampati kako biste imali rezervne kopije na papiru. Iskusni programeri u Pascalu mogu pasti u iskusenje da menjaju izvorni kd svojih aplikacija. Nezavisno od vaseg iskustva, ipak, novom programiranju bi trebalo da pristupite veoma oprezno. Delphijev generator koda je izuzetno pametan, ali ipak ne moze da razume bas svaku izmenu koju izvrsite. Da biste postigli najbolje rezultate, pratite predloge u ovoj knjizi u vezi sa stvaranjem novih aplikacija. Vremenom, pravila u vezi sa tim sta mozete, a sta ne mozete da izmenite postace ocigledna. Pratite sledece korake kako biste ispitali izvorni kd primera aplikacije Hello i upoznali se sa programiranjem i datotekama koje Delphi stvara: Ako projekat Hello nije otvoren, odaberite File|Open... da biste otvorili datoteku projekta Hellodpr. Odaberite View|Units (Ctrl+F12) ili pritisnite dugme precice Select-unit-from-list, pa odaberite Main iz liste modula. Ovim cete prikazati izvorni kd modula u Delphijevom prozoru editora. Pritisnite taster Enter ili pritisnite OK, da biste zatvorili okvir za dijalog modula. Listing 1-2 prikazuje tekst koji cete videti na ekranu. Isti tekst se nalazi i na CD-u pod imenom Main.pas u direktorijumu Source\\Hello. Ponovo odaberite View|Units, ali ovog puta zatvorite modul Hello. Prozor editora sada prikazuje dve datoteke odaberite jednu od njih tako sto cete pritisnuti jezicak kartice na vrhu prozora. Listing 1-3 prikazuje tekst datoteke projekta, koji se nalazi na CD-u kao Hello.dpr u direktorijumu Source\\Hello. Listing 1-2: Hello\\Main.pas unit Main; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) CloseButton: TButton; procedure CloseButtonClick(Sender: TObject); private { Private declarations }

public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.CloseButtonClick(Sender: TObject); begin Close; end; end. Listing 1-3: Hello\\Hello.dpr program Hello; uses Forms, Main in 'MAIN.PAS' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Kako biste zatvorili pojedinacne datoteke u prozoru editora, izaberite datu karticu i pritisnite tastere Ctrl+F4, ili pritisnite desnim tasterom misa i odaberite Close Page. Ovim jednostavno zatvarate karticu u prozoru editora time ne brisete datoteku sa diska. Da biste ponovo otvorili datoteku sa izvornim kodom modula, odaberite njeno ime pomocu komande View|Units. Delphijev izvorni kd projekta nalazi se u najmanje dve tekstualne datoteke u ovom slucaju u Main.pas i Hello.dpr. Datoteka Main.pas u listingu 1-2 jeste primer programskog modula koji sadrzi program neophodan za glavni prozor obrasca programa Hello. Sve aplikacije u ovoj knjizi imaju bar jedan modul, ali slozeni projekti mogu imati vise modul, od kojih ce svaki biti smesten u zasebnu .pas datoteku. Druga datoteka izvornog koda u tipicnoj aplikaciji Delphija sadrzi celokupan izvorni kd projekta. Na primer, Hello.dpr u listingu 1-3 prikazuje izvorni kd za projekat Hello. Svaka aplikacija ima jednu jedinu datoteku projekta. Da biste odstampali tekucu stranicu datoteke iz prozora editora, odaberite File|Print... Mozete izabrati jednu od mnogobrojnih opcija koje se javljaju u rezultujucem okviru za dijalog Print Selection. Na primer, osposobite Line numbers kako biste numerisali svaki red u programu, ili osposobite opciju Header/page number radi zavrsnog izgleda. Osposobite opciju Syntax print kako biste stampali kljucne reci polucrno i koristili kurziv ili podvlacili ostale elemente programa. Onesposobite Syntax print radi brzeg stampanja na sporijim, matricnim stampacima, ili ako vise volite relativno jednostavan izgled listinga. Novije verzije Delphija sadrze opciju za stampanje u boji. Rezultujuca lista prikazuje kljucne reci i ostale elemente programa uz koriscenje sintaksickog isticanja, slicnog onome sto cete videti u prozoru editora u Delphiju. Naravno, potreban je stampac u boji kako biste

koristili ovu mogucnost. Osim toga, mozda cete pozeleti da koristite Tools|Environment Options... kako biste odabrali standardnu semu boja ostale postavke kao sto je Classic, na primer, bolje izgledaju na ekranu nego sto je to slucaj na papiru. Probajte sve ovo na nekoliko probnih datoteka, sve dok ne postignete izgled koji vam odgovara. Nazalost, potrebno je da zaista odstampate stranicu kako biste izmenili opcije stampanja njihova izmena i prekidanje stampanja ponovo vracaju u aktivno stanje stare postavke. Datoteke sa programskim modulima Pogledajmo sada poblize izvorni kd koji Delphi stvara za projekat, pocev od modula glavnog obrasca, Main.pas (listing 1-2). Prvi red u ovoj datoteci naznacava ime modula u ovom slucaju Main. Delphi daje modulu isto ime koje navodite kada snimate datoteku sa modulom projekta. Potom sledi direktiva interfejsa, koja sledece pojmove cini dostupnim ostalim modulima koji koriste ovaj modul. Interfejs sadrzi javne deklaracije modula. Pojmovi koji nisu u interfejsu skriveni su za ostale module. Programski moduli mogu a obicno to i rade koristiti druge module. Na primer, Main koristi veliki broj razlicitih modula, od kojih su svi popisani u direktivi upotreba modula. Moduli kao sto su Windows, Messages, SysUtils i drugi sadrze podatke i kd za Windowsov API, ili interfejs za programiranje aplikacija (engl. application programming interface), i za Delphijeve komponente. Mozete praviti i sopstvene module i koristiti njih. Na primer, mozete napraviti modul sa podacima i kodom koji treba da dele razliciti delovi programa. Dalje u listingu za Main.pas nalazi se odeljak deklaracije tipova (engl. type declaration section), koji prepoznajemo po kljucnoj reci type. Tip preciznije nazvan tip podataka opisuje prirodu stavke koja moze biti napravljena u memoriji. Na primer, Integer je tip podataka koji predstavlja cele brojeve. Da bi se Integeri koristili, morate da napravite jednu promenljivu tog tipa, ili vise njih koje mogu da sadrze posebne vrednosti, poput 123. Ostali tipovi podataka Pascala obuhvataju znakove, znakovne nizove, zapise (slogove) i vrednosti u pokretnom zarezu. Njih i druge tipove bolje cu objasniti na osnovu slucajeva u kojima se javljaju u primerima datoteka iz ove knjige. Tip podataka moze biti i klasa, objektno orijentisana struktura koja se u ogromnoj meri koristi u aplikacijama Delphija. Klasa opisuje osobinu objekta koji moze biti napravljen u memoriji. Klasa obuhvata srodan kd i podatke, koji se zajednickim imenom zovu clanovima klase. Klase mogu da naslede clanove drugih klasa. Na primer, klasa TFoem1 u Main.pas nasledjuje clanove TForma, klase koju Delphi obezbedjuje za izradu obrazaca. Zbog toga se klasaTForm1 naziva potomkom klase TForm. Pored onih koje nasledjuje, klasa TForm1 u Main.pas deklarise dva dodatna clana. Prvi clan je objekat tipa TButton, pod imenom CloseButton. Drugi clan klase TForm1 je procedura, podrutina koja izvrsava radnju. U ovom slucaju procedura CloseButtonClick zavrsava program kada pritisnete dugme Close. Ovo su procedure za obradu komponente i dogadjaja koje ste napravili prateci uputstva u ovom poglavlju Delphi pise kd kao odgovor na svojstva i dogadjaje za objekte komponente koje ubacujete u obrasce. Klase mogu imati dodatne deklaracije, od kojih neke mogu biti tipa private (za upotrebu samo unutar modula klase) ili tipa public (koje su dostupne naredbama u drugim modulima). Ovaj slucaj nema deklaracije ni private ni public tipa. Dva komentara uokvirena viticastim zagradama ukazuju na mesta gde ovi tipovi deklaracija mogu biti postavljeni: private { Private declarations } public

{Public declarations } Komentari nemaju nikakvog uticaja na period izvrsavanja. Oni predstavljaju puke napomene koje opisuju aspekte programa. Komentar moze objasniti nezgodnu naredbu, a moze i identifikovati autora programa, broj revizije, ili neke druge cinjenice. Mozete uneti sta god zelite izmedju zagrada osim jos jedne zatvorene zagrade. Komentari takodje mogu da se protegnu preko vise redova. Evo primera viserednog komentara: { Ovaj viseredni komentar zauzima tri reda. Pocinje otvorenom zagradom u prvom redu a zavrsava se zatvorenom zagradom. } Umesto viticastih zagrada, mozete koristiti dvoznakovne simbole (* i *) ostatke starih dana Pascala kada mnoge tastature i terminali nisu sadrzavali viticaste zagrade. Na primer, ovo je sasvim prihvatljiv komentar: (* Autor programa: Ovde upisujete svoje ime *) Mozete mesati razlicite stilove komentara u istom programu, ali ako pocnete komentar otvorenom zagradom, morate ga zavrsiti zatvorenom zagradom. I obrnuto, ako komentar zapocnete sa (* morate ga zavrsiti sa *). Treci tip komentara karakteristican za Object Pascal, a pozajmljen iz C++-a pocinje dvostrukom kosom crtom i proteze se do kraja tekuceg reda. Ovaj tip komentara moze biti dugacak samo koliko i jedan red. Na primer, ovaj tip komentara mozete koristiti kako biste dodali napomenu sa objasnjenjem u deklaraciju: var Counter: Integer; // Privremeni brojac u petlji Konacno, u onom odeljku modula koji definise interfejs postoji jedna ili vise promenljivih kojima prethodi kljucna rec var. Moduli mogu imati nijednu, jednu ili vise promenljivih. U ovom primeru postoji samo jedna promenljiva: var Form1: TForm1; Deklaracija stvara promenljivu pod imenom Form1 klase TForm1. Drugim recima, Form1 je objekat klase koja zauzima prostor u memoriji. Objekat u ovom primeru predstavlja glavni prozor programa Hello, sa dugmetom i procedurom za obradu dogadjaja koja izvodi radnju dugmeta. I ovde Delphi pise ovu deklaraciju kada napravite obrazac. Ovo nikad ne morate da radite rucno. Objekat klase je slican promenljivoj tipa podataka kao sto je Integer. Mozete napraviti jedan ili vise stvarnih objekata bilo koje klase, bas kao sto mozete napraviti i vise promenljivih tipa Integer. Iza odeljka za interfejs sledi implementacija modula, gde Delphi stvara naredbe na koje odgovaraju radnje prilikom izvrsavanja; mozete ubaciti sopstvene deklaracije i drugo programiranje. Osim toga, u implementaciju modula mozete uneti naredbe. Na primer, odredite gde je procedura u koju ste uneli naredbu Close;. Ponavljamo je radi podsecanja: procedure TForm1.CloseButtonClick(Sender: TObject); begin Close; end; Neposredno ispred te procedure, naici cete na ovu direktivu cudnog izgleda: {$R *.DFM} Iako ovo lici na komentar, znak za dolar odmah posle otvorene zagrade govori Delphiju da ovaj red predstavlja posebnu direktivu ona otvara i cita datoteku koja se zavrsava

nastavkom .dfm (sto je skraceno za Delphi Form). Zvezdica govori Delphiju da potrazi datoteku pod imenom koje se podudara sa imenom projekta, ali koja se zavrsava nastavkom .dfm. Ova datoteka sadrzi svojstva obrasca kojima se pristupa pomocu Object Inspectora. U poslednjem redu datoteke Main.pas nalazi se kljucna rec end koju prati tacka. Tehnicki, kljucna rec end odredjuje kraj modula, a tacka oznacava kraj datoteke. Ipak, ova razlika je prilicno nebitna. Dovoljno je ako zapamtite da samo poslednja kljucna rec end treba da se zavrsi tackom. Datoteke projekta Strucnjaci za Pascal ce prepoznati Hello.dpr kao program napisan u Pascalu (pogledajte listing 1-3). Kao i u slucaju programskog modula Main, Delphi stvara ovaj tekst automatski. Projekat u Delphiju najcesce predstavlja program u Pascalu. Projekat ima dve osnovne svrhe da deklarise module aplikacije i da pokrene program. Prvi red u listingu za Hello.dpr navodi ime projekta unutar deklaracije programa, sto je u ovom slucaju Hello. U sledecem redu, deklaracija uses navodi ostale module koje program koristi. U ovom slucaju postoje dva takva modula. Prvi je standardni modul, Forms, koji omogucava neophodno programiranje za stvaranje obrazaca u Delphiju tokom rada. Drugi je modul Main iz datoteke Main.pas. Drugi red deklaracije uses ukazuje na to da se modul Main nalazi unutar datoteke Main.pas, a da je Form1 ime objekta obrasca u tom modulu. Delphi citav kd pise automatski. Komanda {$R *.RES} koja sledi odmah posle, povezuje izvornu binarnu datoteku u kd prevedene .exe datoteke. Izvorne datoteke obicno sadrze samo sistemsku ikonu programa, ali mogu imati i druge tipove resursa. Ipak, izvorne datoteke u Delphiju necete koristiti u onolikoj meri u kojoj je to mozda slucaj sa ostalim sistemima za razvoj, kao sto su, na primer, C i C++. Na kraju, u projektu se nalaze tri naredbe izmedju kljucnih reci begin i end, pracenih tackom koja oznacav