BPL vs. DLL Delphi programavimo programose

Rašydami ir komponuodami „Delphi“ programą, paprastai sukuriame vykdomąjį failą - autonominę „Windows“ programą. Pavyzdžiui, skirtingai nei „Visual Basic“ „Delphi“ gamina programos suvyniotos į kompaktiškus exe failus, nereikia didelių gabaritų vykdymo laiko bibliotekų (DLL).

Pabandykite tai: paleiskite „Delphi“ ir sukompiliuokite tą numatytąjį projektą su viena tuščia forma. Gausite apie 385 KB vykdomąjį failą („Delphi 2006“). Dabar eikite į „Projektas - Parinktys - Paketai“ ir pažymėkite žymimąjį laukelį „Sukurkite naudodami runtime paketus“. Sudarykite ir paleiskite. Voila, exe dydis dabar yra apie 18 KB.

Pagal numatytuosius nustatymus „Sukurti su runtime paketais“ nėra pažymėti ir kiekvieną kartą kurdami „Delphi“ programą, kompiliatorius susieja visą kodą, kurio jūsų programai reikia paleisti tiesiai į jūsų programos vykdomasis failas. Jūsų programa yra atskira programa ir jai nereikia jokių palaikomųjų failų (pvz., DLL) - štai kodėl „Delphi exe“ yra tokie dideli.

Vienas iš kūrimo būdų mažesnės „Delphi“ programos yra pasinaudoti „Borland“ paketų bibliotekomis arba BPL.

instagram viewer

Kas yra paketas?

speciali dinaminių nuorodų biblioteka, naudojama „Delphi“ programose

Paketai įgalina mūsų programos dalis sudėti į atskirus modulius, kuriuos galima bendrinti keliose programose. Paketai taip pat suteikia galimybę įdiegti (pasirinktinius) komponentus į „Delphi“ VCL padėklą.

Todėl iš esmės „Delphi“ gali pagaminti dviejų rūšių pakuotes:

  • Vykdymo laiko paketai - suteikia funkcionalumą, kai vartotojas paleidžia programą - jie veikia panašiai kaip standartiniai DLL.
  • Projektavimo laiko paketai - naudojami komponentų diegimui „Delphi IDE“ ir sukurti specialius pasirinktinių komponentų nuosavybės redaktorius.
Dizaino paketai

Dabar šiame straipsnyje bus kalbama apie vykdymo laiko paketus ir kaip jie gali padėti programuotojui „Delphi“.

Vienas neteisingas mitas: neprivalote būti a „Delphi“ komponentų kūrėjas pasinaudoti pakuotėmis. Pradedantieji „Delphi“ programuotojai turėtų pabandyti dirbti su paketais - jie geriau supras, kaip veikia paketai ir „Delphi“.

Kada ir kada nenaudokite pakuočių

DLL dažniausiai naudojami kaip procedūrų ir funkcijų rinkiniai, į kuriuos gali paskambinti kitos programos. Be to, kad rašome DLL su įprasta tvarka, mes galime į Delphi formą sudėti ir visą DLL (pvz., AboutBox formą). Kita įprasta technika yra saugoti tik DLL failus. Daugiau informacijos apie tai, kaip „Delphi“ veikia su DLL, rasite šiame straipsnyje: DLL ir Delphi.

Prieš lygindami DLL ir BPL, turime suprasti du būdus, kaip susieti kodą vykdomajame faile: statinį ir dinaminį susiejimą.

Statinis susiejimas reiškia, kad kai sudaromas „Delphi“ projektas, visas jūsų programai reikalingas kodas yra tiesiogiai susietas su jūsų programos vykdomuoju failu. Gautas exe faile yra visas kodas iš visų vienetų, kurie dalyvauja projekte. Galite pasakyti per daug kodo. Pagal numatytuosius nustatymus, daugiau kaip 5 vienetų sąrašo („Windows“, „Messages“, „SysUtils“ ir kt.) Sąrašui naudojamas naujų formų vienetų sąrašas. Tačiau „Delphi“ jungiklis yra pakankamai protingas, kad susietų tik minimalų kodą vienetuose, kuriuos faktiškai naudoja projektas. Statiškai susiejant mūsų programą, tai yra atskira programa ir jai nereikia jokių palaikančių paketų ar DLL (dabar pamirškite BDE ir „ActiveX“ komponentus). Delfuose, statinis susiejimas yra numatytasis.

Dinaminis susiejimas yra tarsi darbas su standartiniais DLL. T. y., Dinaminis susiejimas suteikia funkcionalumą keliems programos neįpareigojant kodo tiesiogiai prie kiekvienos programos - visi reikalingi paketai įkeliami runtime. Didžiausias dinaminio susiejimo dalykas yra tai, kad paketai automatiškai įkeliami naudojant jūsų programą. Norėdami įkelti paketus, neprivalote rašyti kodo, taip pat neturite pakeisti savo kodo.

Tiesiog pažymėkite žymimąjį laukelį „Sukurkite naudodami runtime paketus“, kurį rasite projekte | Parinkčių dialogo langas. Kitą kartą kuriant programą, projekto kodas bus dinamiškai susietas su vykdymo paketais, o ne tuo, kad vienetai būtų statiškai susieti su jūsų vykdomuoju failu.

instagram story viewer