BPL vs. DLL v programovacích aplikáciách Delphi

click fraud protection

Keď píšeme a kompilujeme aplikáciu Delphi, zvyčajne vygenerujeme spustiteľný súbor - samostatnú aplikáciu Windows. Na rozdiel od jazyka Visual Basic napríklad Delphi vyrába aplikácie zabalené do kompaktných exe súborov bez potreby objemných runtime knižníc (DLL).

Vyskúšajte toto: spustite Delphi a kompilujte tento predvolený projekt do jedného prázdneho formulára, čím získate spustiteľný súbor s veľkosťou približne 385 kB (Delphi 2006). Teraz prejdite na Project - Options - Packages a začiarknite políčko „Build with runtime balíčky“. Zostavte a spustite. Voila, veľkosť exe je teraz okolo 18 KB.

V predvolenom nastavení nie je začiarknuté políčko „Build with runtime balíčky“ a pri každej aplikácii Delphi kompilátor prepojí všetok kód, ktorý vaša aplikácia potrebuje na spustenie priamo do vašej aplikácie. spustiteľný súbor aplikácie. Vaša aplikácia je samostatný program a nevyžaduje žiadne podporné súbory (napríklad DLL) - preto sú Delphi exe také veľké.

Jeden spôsob tvorby menšie programy Delphi znamená skrátiť výhody knižníc balíkov Borland alebo BPL.

instagram viewer

Čo je to balík?

špeciálna knižnica dynamických odkazov, ktorú používajú aplikácie Delphi

Balíčky nám umožňujú umiestňovať časti našej aplikácie do samostatných modulov, ktoré je možné zdieľať vo viacerých aplikáciách. Balíky tiež poskytujú prostriedky na inštaláciu (vlastných) komponentov na paletu Delphi VCL.

Preto spoločnosť Delphi môže v zásade vyrábať dva typy obalov:

  • Balíky run-time - poskytujú funkčnosť, keď používateľ spúšťa aplikáciu - fungujú podobne ako štandardné knižnice DLL.
  • Balíky v čase návrhu - používajú sa na inštaláciu komponentov do systému Windows Delphi IDE a vytvoriť špeciálne editory majetku pre vlastné komponenty.
Dizajnové obaly

Od tohto bodu sa tento článok bude zaoberať run-time balíčkami a tým, ako môžu pomôcť Delphi programátorovi.

Jeden zlý mit: nemusíte byť a Vývojár komponentov Delphi využiť výhody balíčkov. Začiatočníci Delphi programátori by sa mali pokúsiť pracovať s balíčkami - lepšie porozumejú tomu, ako balíčky a Delphi fungujú.

Kedy a kedy nepoužívať balíky

DLL sa najčastejšie používajú ako zbierky procedúr a funkcií, ktoré môžu volať iné programy. Okrem zapisovania DLL pomocou vlastných rutín môžeme do DLL umiestniť aj kompletný formulár Delphi (napríklad formulár AboutBox). Ďalšou bežnou technikou je ukladať do knižníc DLL iba prostriedky. Ďalšie informácie o tom, ako spoločnosť Delphi pracuje s knižnicami DLL, nájdete v tomto článku: DLL a Delphi.

Predtým, ako budeme porovnávať dll a BPL, musíme porozumieť dvom spôsobom prepojenia kódu v spustiteľnom súbore: statickému a dynamickému prepojeniu.

Statické prepojenie znamená, že pri kompilácii projektu Delphi je všetok kód, ktorý vaša aplikácia vyžaduje, priamo spojený s spustiteľným súborom vašej aplikácie. Výsledný exe súbor obsahuje všetok kód od všetkých jednotiek, ktoré sú zapojené do projektu. Môžete povedať príliš veľa kódu. V predvolenom nastavení používa klauzulu pre nový zoznam jednotiek formulára viac ako 5 jednotiek (Windows, Správy, SysUtils, ...). Linker Delphi je však dosť chytrý na to, aby prepojil iba minimum kódu v jednotkách skutočne použitých v projekte. Pri statickom prepojení je naša aplikácia samostatným programom a nevyžaduje žiadne podporné balíčky ani dll (zatiaľ nezabudnite na komponenty BDE a ActiveX). V Delphi statické prepojenie je predvolené.

Dynamické prepojenie je ako práca so štandardnými DLL. To znamená, že dynamické prepojenie poskytuje funkčnosť viacerým aplikácie bez toho, aby bol kód viazaný priamo ku každej aplikácii - všetky potrebné balíčky sa načítajú do beh programu. Najlepšie na dynamickom prepojení je, že načítanie balíkov pomocou vašej aplikácie je automatické. Na načítanie balíkov nemusíte písať kód ani nemusíte meniť svoj kód.

Jednoducho začiarknite políčko „Build with runtime balíčky“, ktoré sa nachádza v Project | Dialógové okno Možnosti. Pri nasledujúcom zostavení aplikácie sa kód vášho projektu dynamicky prepojí s runtime balíčkami a nebude mať staticky prepojené jednotky do spustiteľného súboru.

instagram story viewer