BPL vs. DLL w aplikacjach programistycznych Delphi

Kiedy piszemy i kompilujemy aplikację Delphi, zwykle generujemy plik wykonywalny - samodzielną aplikację Windows. Na przykład w przeciwieństwie do Visual Basic Delphi produkuje aplikacje opakowane w kompaktowe pliki exe, bez potrzeby tworzenia obszernych bibliotek wykonawczych (DLL).

Spróbuj: uruchom Delphi i skompiluj ten domyślny projekt z jednym pustym formularzem, to wygeneruje plik wykonywalny o wielkości około 385 KB (Delphi 2006). Teraz przejdź do Projekt - Opcje - Pakiety i zaznacz pole wyboru „Buduj z pakietami wykonawczymi”. Skompiluj i uruchom. Voila, rozmiar exe wynosi teraz około 18 KB.

Domyślnie opcja „Buduj z pakietami wykonawczymi” nie jest zaznaczona, a za każdym razem, gdy tworzymy aplikację Delphi, kompilator łączy cały kod wymagany przez aplikację do uruchomienia bezpośrednio w Twojej plik wykonywalny aplikacji. Twoja aplikacja jest samodzielnym programem i nie wymaga żadnych plików pomocniczych (takich jak biblioteki DLL) - dlatego exe Delphi są tak duże.

Jeden sposób tworzenia

instagram viewer
mniejsze programy Delphi ma w skrócie skorzystać z „bibliotek pakietów Borlanda” lub BPL.

Co to jest paczka?

specjalna biblioteka dynamicznego łącza wykorzystywana przez aplikacje Delphi

Pakiety umożliwiają nam umieszczanie części naszej aplikacji w osobnych modułach, które mogą być współużytkowane przez wiele aplikacji. Pakiety zapewniają również sposób instalowania (niestandardowych) komponentów na palecie VCL firmy Delphi.

Dlatego Delphi może tworzyć dwa typy pakietów:

  • Pakiety wykonawcze - zapewniają funkcjonalność, gdy użytkownik uruchamia aplikację - działają one podobnie jak standardowe biblioteki DLL.
  • Pakiety czasu projektowania - używane do instalowania komponentów w Delphi IDE oraz do tworzenia specjalnych edytorów właściwości dla niestandardowych komponentów.
Pakiety projektowe

Od tego momentu w tym artykule zajmiemy się pakietami wykonawczymi i jak mogą pomóc programistom Delphi.

Jeden zły mit: nie musisz być Deweloper komponentów Delphi skorzystać z pakietów. Początkujący programiści Delphi powinni spróbować pracować z pakietami - lepiej zrozumieją, jak działają pakiety i Delphi.

Kiedy i kiedy nie używać pakietów

Biblioteki DLL są najczęściej używane jako zbiory procedur i funkcji, które mogą wywoływać inne programy. Oprócz pisania bibliotek DLL z niestandardowymi procedurami, możemy umieścić kompletny formularz Delphi w DLL (na przykład formularz AboutBox). Inną popularną techniką jest przechowywanie w bibliotekach DLL zasobów. Więcej informacji o tym, jak Delphi działa z bibliotekami DLL, znajduje się w tym artykule: Biblioteki DLL i Delphi.

Zanim przejdziemy do porównania bibliotek DLL i BPL, musimy zrozumieć dwa sposoby łączenia kodu w pliku wykonywalnym: łączenie statyczne i dynamiczne.

Łączenie statyczne oznacza, że ​​podczas kompilowania projektu Delphi cały kod wymagany przez aplikację jest bezpośrednio łączony z plikiem wykonywalnym aplikacji. Powstały exe plik zawiera cały kod ze wszystkich jednostek zaangażowanych w projekt. Można powiedzieć, że jest za dużo kodu. Domyślnie używa klauzuli dla nowej listy jednostek formularza więcej niż 5 jednostek (Windows, Messages, SysUtils, ...). Jednak linker Delphi jest wystarczająco inteligentny, aby połączyć tylko minimum kodu w jednostkach faktycznie używanych przez projekt. Dzięki statycznemu łączeniu nasza aplikacja jest samodzielnym programem i nie wymaga żadnych obsługiwanych pakietów ani bibliotek DLL (na razie zapomnij o komponentach BDE i ActiveX). W Delphi łączenie statyczne jest wartością domyślną.

Dynamiczne linkowanie jest jak praca ze standardowymi bibliotekami DLL. Oznacza to, że dynamiczne łączenie zapewnia funkcjonalność wielu aplikacje bez wiązania kodu bezpośrednio do każdej aplikacji - wszystkie wymagane pakiety są ładowane w środowisko uruchomieniowe. Największą zaletą dynamicznego łączenia jest to, że ładowanie pakietów przez twoją aplikację odbywa się automatycznie. Nie musisz pisać kodu, aby załadować pakiety, ani nie musisz zmieniać kodu.

Po prostu zaznacz pole wyboru „Buduj z pakietami wykonawczymi” znajdujące się w projekcie | Okno dialogowe Opcje. Następnym razem, gdy zbudujesz aplikację, kod twojego projektu zostanie dynamicznie połączony z pakietami środowiska wykonawczego, a nie statycznie połączony z plikiem wykonywalnym.