BPL vs. DLL в приложения за програмиране на Delphi

click fraud protection

Когато пишем и компилираме приложение на Delphi, обикновено генерираме изпълним файл - самостоятелно приложение за Windows. За разлика от Visual Basic, например, Delphi произвежда приложения, увити в компактни EXE файлове, без да се нуждаят от обемисти библиотеки по време на работа (DLL).

Опитайте това: стартирайте Delphi и компилирайте този проект по подразбиране с един празен формуляр, това ще създаде изпълним файл с около 385 KB (Delphi 2006). Сега отидете на Project - Options - Packages и поставете отметка в квадратчето „Build with runtime пакети“. Компилирайте и стартирайте. Voila, размерът на exe вече е около 18 KB.

По подразбиране „Създаване с пакети за изпълнение“ не е отметнато и всеки път, когато направим приложение на Delphi, компилаторът свързва целия код, който вашето приложение изисква да стартира директно във вашия изпълним файл на приложението. Вашето приложение е самостоятелна програма и не изисква никакви поддържащи файлове (като DLL файлове) - затова Delphi exe са толкова големи.

instagram viewer

Един от начините за създаване по-малки програми на Delphi е да се възползвате от „библиотеките на пакети Borland“ или BPL накратко.

Какво е пакет?

специална библиотека с динамични връзки, използвана от приложенията на Delphi

Пакетите ни позволяват да поставяме части от нашето приложение в отделни модули, които могат да бъдат споделяни в множество приложения. Пакетите също предоставят средство за инсталиране (персонализирани) компоненти в VCL палетата на Delphi.

Следователно, основно Delphi могат да направят два вида пакети:

  • Пакети за изпълнение - осигуряват функционалност, когато потребителят стартира приложение - те работят много като стандартните DLL файлове.
  • Пакети за време за проектиране - използват се за инсталиране на компоненти в Delphi IDE и да създадете специални редактори на свойства за персонализирани компоненти.
Дизайнерски пакети

От този момент тази статия ще се занимава с пакетите за изпълнение и как те могат да помогнат на програмиста на Delphi.

Една грешна мита: не се изисква да бъдеш Програмист за компоненти на Delphi да се възползвате от пакетите. Начинаещите програмисти на Delphi трябва да се опитат да работят с пакети - те ще получат по-добро разбиране за това как работят пакетите и Delphi.

Кога и кога не използвайте пакетите

DLL файловете се използват най-често като колекции от процедури и функции, които могат да извикват други програми. Освен да пишем DLL файлове с персонализирани процедури, можем да поставим цялостен Delphi формуляр в DLL (например форма AboutBox). Друга често срещана техника е да съхранявате нищо освен ресурси в DLL файлове. Повече информация за това как Delphi оперира с DLL файлове, вижте в тази статия: DLL и Delphi.

Преди да продължим за сравнение между DLL и BPL, трябва да разберем два начина за свързване на код в изпълним файл: статично и динамично свързване.

Статично свързване означава, че когато се компилира проект Delphi, целият код, който вашето приложение изисква, е пряко свързан с изпълним файл на приложението ви. Полученият exe файлът съдържа целия код от всички единици, които участват в проекта. Прекалено много код, може да кажете. По подразбиране използва клауза за нов списък на формулярни единици с повече от 5 единици (Windows, Съобщения, SysUtils, ...). Линкерът на Delphi обаче е достатъчно умен, за да свърже само минималния код в реално използваните единици на проекта. Със статично свързване нашето приложение е самостоятелна програма и не изисква никакви поддържащи пакети или DLL файлове (забравете BDE и ActiveX компоненти за сега). В Делфи статично свързване е по подразбиране

Динамично свързване е като работа със стандартни DLL файлове. Тоест динамичното свързване осигурява функционалност на множество приложения, без да свързвате кода директно към всяко приложение - всички необходими пакети се зареждат в време на изпълнение. Най-голямото нещо при динамичното свързване е, че зареждането на пакети от вашето приложение е автоматично. Не е нужно да пишете код, за да заредите пакетите, нито трябва да променяте кода.

Просто поставете отметка в квадратчето „Създаване с пакети за изпълнение“, намерено в проекта | Диалогов прозорец с опции. Следващия път, когато изградите приложението си, кодът на вашия проект ще бъде динамично свързан с пакети за изпълнение, вместо да има единици, свързани статично във вашия изпълним файл.

instagram story viewer