Kun kirjoitamme ja käännämme Delphi-sovellusta, luomme yleensä suoritettavan tiedoston - itsenäisen Windows-sovelluksen. Toisin kuin esimerkiksi Visual Basic, Delphi tuottaa sovellukset käärittynä kompakteihin exe-tiedostoihin, ilman että tarvitaan tilaa vieviä runtime-kirjastoja (DLL).
Kokeile tätä: käynnistä Delphi ja käännä kyseinen oletusprojekti yhdellä tyhjällä lomakkeella. Tämä tuottaa suoritettavan tiedoston, joka on noin 385 kt (Delphi 2006). Siirry nyt Projekti - Valinnat - Paketit -kohtaan ja valitse 'Rakenna suorituspaketeilla' -valintaruutu. Käännä ja suorita. Voila, exe-koko on nyt noin 18 kt.
Oletuksena 'Suorita runtime-paketit' -valintaa ei ole valittu ja joka kerta kun teemme Delphi-sovelluksen, kääntäjä linkittää kaikki koodit, joita sovelluksesi vaatii suorittaaksesi suoraan sovelluksen suoritettava tiedosto. Sovelluksesi on itsenäinen ohjelma, joka ei vaadi tukitiedostoja (kuten DLL) - siksi Delphi exe -sovellukset ovat niin suuria.
Yksi tapa luoda pienemmät Delphi-ohjelmat on hyödyntää 'Borland-pakettikirjastoja' tai BPL: tä.
Mikä on paketti?
erityinen dynaamisen linkin kirjasto, jota Delphi-sovellukset käyttävät
Paketit antavat meille mahdollisuuden sijoittaa osia sovelluksestamme erillisiin moduuleihin, jotka voidaan jakaa useille sovelluksille. Paketit tarjoavat myös keinon (mukautettujen) komponenttien asentamiseen Delphin VCL-palettiin.
Siksi Delphi voi valmistaa periaatteessa kahta tyyppisiä paketteja:
- Suoritusajan paketit - tarjoavat toiminnallisuuden, kun käyttäjä ajaa sovellusta - ne toimivat paljon kuin tavalliset DLL-tiedostot.
- Suunnitteluajan paketit - käytetään komponenttien asentamiseen Delphi IDE ja luoda erityisiä ominaisuuksien muokkauksia mukautettuihin komponentteihin.
Tästä eteenpäin tämä artikkeli käsittelee ajonaikaisia paketteja ja kuinka ne voivat auttaa Delphi-ohjelmoijaa.
Yksi väärä mit: Sinun ei tarvitse olla a Delphi-komponenttikehittäjä hyödyntää paketteja. Aloittelijoiden Delphi-ohjelmoijien tulisi yrittää työskennellä pakettien kanssa - he ymmärtävät paremmin, kuinka paketit ja Delphi toimivat.
Milloin ja milloin ei ota Käytä pakkauksia
DLL-tiedostoja käytetään yleisimmin menettelyjen ja toimintojen kokoelmina, joita muut ohjelmat voivat kutsua. Sen lisäksi, että kirjoitat DLL-tiedostoja mukautetuilla rutiineilla, voimme sijoittaa täydellisen Delphi-lomakkeen DLL-tiedostoon (esimerkiksi AboutBox-muoto). Toinen yleinen tekniikka on tallentaa vain resursseja DLL-tiedostoihin. Lisätietoja tästä artikkelista siitä, kuinka Delphi toimii DLL-tiedostojen kanssa: DLL ja Delphi.
Ennen kuin siirrymme DLL: n ja BPL: n vertailuun, meidän on ymmärrettävä kaksi tapaa linkittää koodi suoritettavassa koodissa: staattinen ja dynaaminen linkitys.
Staattinen linkitys tarkoittaa, että kun Delphi-projekti käännetään, kaikki sovelluksesi tarvitsema koodi linkitetään suoraan sovelluksesi suoritettavaan tiedostoon. Tuloksena oleva exe tiedosto sisältää kaikki koodit kaikista yksiköistä, jotka ovat mukana projektissa. Liian paljon koodia, saatat sanoa. Oletuksena käyttää lauseketta uudelle muotoyksikköluettelolle yli 5 yksikköä (Windows, Viestit, SysUtils, ...). Delphi-linkkeri on kuitenkin tarpeeksi älykäs linkittämään vain minimimäärä koodia yksiköissä, joita projekti tosiasiallisesti käyttää. Staattisella linkityksellä sovelluksemme on itsenäinen ohjelma, joka ei vaadi tukipaketteja tai DLL-tiedostoja (unohda BDE- ja ActiveX-komponentit nyt). Delphissä, staattinen linkitys on oletus.
Dynaaminen linkitys on kuin työskentely tavallisten DLL-tiedostojen kanssa. Eli dynaaminen linkitys tarjoaa toiminnallisuuden useille sovellukset sitomatta koodia suoraan kuhunkin sovellukseen - tarvittavat paketit ladataan runtime. Suurin asia dynaamisessa linkittämisessä on, että sovelluksesi lataa paketit automaattisesti. Sinun ei tarvitse kirjoittaa koodia pakettien lataamiseksi, eikä sinun tarvitse muuttaa koodia.
Valitse vain Projekti | -kohdassa oleva 'Rakenna suorituspaketeilla' -valintaruutu Asetukset-valintaikkuna. Seuraavan kerran kun rakennat sovelluksen, projektisi koodi linkitetään dynaamisesti suorituksenaikaisiin paketteihin sen sijaan, että yksiköt olisivat linkitettyinä staattisesti suoritettavaan tiedostoon.