Kada pišemo i sastavljamo Delphi aplikaciju, obično generiramo izvršnu datoteku - samostalni Windows program. Za razliku od Visual Basic npr. Delphi proizvodi aplikacije umotane u kompaktne exe datoteke, bez potrebe za glomaznim runtime bibliotekama (DLL-ovima).
Pokušajte ovo: pokrenite Delphi i sastavite taj zadani projekt s jednim praznim obrascem, to će stvoriti izvršnu datoteku od oko 385 KB (Delphi 2006). Sada idite na Projekt - Opcije - Paketi i potvrdite okvir "Sastavi uz runtime pakete". Sastavite i pokrenite. Voila, veličina exe-a se sada kreće oko 18 KB.
Prema zadanim postavkama, opcija "Sastavljanje pomoću runtime paketa" nije isključena, a svaki put kada napravimo Delphi aplikaciju, prevodilac povezuje sav kôd koji vaš program treba izvesti izravno u vaš izvršna datoteka aplikacije. Vaša je aplikacija samostalni program i ne zahtijeva nikakve potporne datoteke (poput DLL-ova) - zato su Delphi exe toliko velike.
Jedan način stvaranja manji Delphi programi jest iskoristiti "Borland paket biblioteke" ili BPL ukratko.
Što je paket?
posebna biblioteka dinamičkih veza koju koriste Delphi aplikacije
Paketi nam omogućuju da dijelove naše aplikacije smjestimo u zasebne module koji se mogu dijeliti u više aplikacija. Paketi također omogućuju instalaciju (prilagođenih) komponenti u Delphi-jevu VCL paletu.
Delphi zato može napraviti dvije vrste paketa:
- Paketi za vrijeme izvođenja - pružaju funkcionalnost kada korisnik pokrene aplikaciju - djeluju poput standardnih DLL-ova.
- Paketi dizajnerskog vremena - koriste se za instaliranje komponenti u Delphi IDE i stvoriti posebne urednike svojstava za prilagođene komponente.
Od ovog trenutka ovaj će se članak baviti paketima koji se pokreću i kako mogu pomoći programeru Delphi.
Jedan pogrešan mit: od vas se ne zahtijeva da budete Delphi komponenta za razvoj iskoristiti pakete. Početni Delphi programeri trebali bi pokušati raditi s paketima - bolje će razumjeti kako paketi i Delphi rade.
Kada i kada ne koristite pakete
DLL-ovi se najčešće koriste kao zbirka postupaka i funkcija koje drugi programi mogu pozvati. Osim pisanja DLL-ova s prilagođenim rutinama, možemo staviti kompletan Delphi obrazac u DLL (na primjer, AboutBox obrazac). Druga uobičajena tehnika je pohranjivanje samo u resurse u DLL-ove. Više informacija o načinu rada Delphija s DLL-ovima potražite u ovom članku: DLL-ovi i Delphi.
Prije nego što nastavimo na usporedbu između DLL-ova i BPL-ova, moramo razumjeti dva načina povezivanja koda u izvršnoj datoteci: statičko i dinamičko povezivanje.
Statično povezivanje znači da je prilikom sastavljanja Delphi projekta sav kôd koji vaš aplikacija zahtijeva izravno povezan s izvršnom datotekom vaše aplikacije. Rezultirajući exe datoteka sadrži svu šifru svih jedinica koje su uključene u projekt. Previše bi koda, mogli biste reći. Prema zadanim postavkama koristi klauzulu za novi popis jedinica obrasca s više od 5 jedinica (Windows, Messages, SysUtils, ...). Međutim, povezivač Delphi dovoljno je pametan da povezuje samo minimum koda u jedinicama koje projekt stvarno koristi. Uz statičko povezivanje naša je aplikacija samostalni program i ne zahtijeva nikakve prateće pakete ili DLL datoteke (za sada zaboravite BDE i ActiveX komponente). U Delfima statičko povezivanje je zadani.
Dinamično povezivanje je poput rada sa standardnim DLL datotekama. Odnosno, dinamično povezivanje pruža višestruku funkcionalnost aplikacije bez povezivanja koda izravno za svaku aplikaciju - svi potrebni paketi učitavaju se u vrijeme izvođenja. Najveća stvar u vezi s dinamičnim povezivanjem je ta što se učitavanje paketa putem vaše aplikacije vrši automatski. Ne morate pisati kôd da biste učitali pakete niti morate mijenjati svoj kôd.
Jednostavno potvrdite potvrdni okvir "Sastavi uz runtime pakete" na Projektu | Dijaloški okvir Mogućnosti. Sljedeći put kad napravite aplikaciju, kôd vašeg projekta dinamički će se povezati s paketima vremena izvršavanja, umjesto da jedinice imaju statički povezane u izvršnu datoteku.