BPL vs. DLL nelle applicazioni di programmazione Delphi

Quando scriviamo e compiliamo un'applicazione Delphi, in genere generiamo un file eseguibile, un'applicazione Windows autonoma. A differenza di Visual Basic, ad esempio, Delphi produce applicazioni racchiuse in file exe compatti, senza la necessità di ingombranti librerie di runtime (DLL).

Prova questo: avvia Delphi e compila quel progetto predefinito con un modulo vuoto, questo produrrà un file eseguibile di circa 385 KB (Delphi 2006). Ora vai a Progetto - Opzioni - Pacchetti e seleziona la casella di controllo "Crea con pacchetti runtime". Compila ed esegui. Voilà, la dimensione exe è ora di circa 18 KB.

Per impostazione predefinita, l'opzione "Crea con pacchetti runtime" è deselezionata e ogni volta che creiamo un'applicazione Delphi, il compilatore collega tutto il codice richiesto dall'applicazione per essere eseguito direttamente nel tuo file eseguibile dell'applicazione. La tua applicazione è un programma autonomo e non richiede alcun file di supporto (come le DLL) - ecco perché gli exe di Delphi sono così grandi.

instagram viewer

Un modo di creare programmi Delphi più piccoli è trarre vantaggio dalle "librerie di pacchetti Borland" o dai BPL in breve.

Che cos'è un pacchetto?

libreria speciale a collegamento dinamico utilizzata dalle applicazioni Delphi

I pacchetti ci consentono di collocare parti della nostra applicazione in moduli separati che possono essere condivisi tra più applicazioni. I pacchetti, inoltre, forniscono un mezzo per installare componenti (personalizzati) nel pallet VCL di Delphi.

Pertanto, Delphi può fondamentalmente creare due tipi di pacchetti:

  • Pacchetti runtime - forniscono funzionalità quando un utente esegue un'applicazione - funzionano in modo molto simile alle DLL standard.
  • Pacchetti in fase di progettazione - utilizzati per installare componenti in Delphi IDE e per creare speciali editor di proprietà per componenti personalizzati.
Pacchetti di design

Da questo punto questo articolo tratterà dei pacchetti di runtime e di come possono aiutare il programmatore Delphi.

Un errore mit: non devi essere un Sviluppatore di componenti Delphi approfittare dei pacchetti. I programmatori principianti Delphi dovrebbero provare a lavorare con i pacchetti: potranno comprendere meglio come funzionano i pacchetti e Delphi.

Quando e quando non ot utilizzare i pacchetti

Le DLL sono più comunemente usate come raccolte di procedure e funzioni che altri programmi possono chiamare. Oltre a scrivere DLL con routine personalizzate, possiamo inserire un modulo Delphi completo in una DLL (ad esempio un modulo AboutBox). Un'altra tecnica comune è quella di memorizzare nient'altro che risorse nelle DLL. Ulteriori informazioni su come Delphi opera con le DLL trovano in questo articolo: DLL e Delphi.

Prima di passare al confronto tra DLL e BPL, dobbiamo comprendere due modi per collegare il codice in un eseguibile: collegamento statico e dinamico.

Collegamento statico significa che quando viene compilato un progetto Delphi, tutto il codice richiesto dall'applicazione viene collegato direttamente al file eseguibile dell'applicazione. L'ex risultante Il file contiene tutto il codice di tutte le unità coinvolte in un progetto. Troppo codice, potresti dire. Per impostazione predefinita, utilizza la clausola per un nuovo elenco di unità del modulo più di 5 unità (Windows, Messaggi, SysUtils, ...). Tuttavia, il linker Delphi è abbastanza intelligente da collegare solo il minimo di codice nelle unità effettivamente utilizzate da un progetto. Con il collegamento statico la nostra applicazione è un programma autonomo e non richiede alcun pacchetto di supporto o DLL (per ora dimentica i componenti BDE e ActiveX). A Delfi, collegamento statico è l'impostazione predefinita.

Collegamento dinamico è come lavorare con DLL standard. Cioè, il collegamento dinamico fornisce funzionalità a più applicazioni senza associare il codice direttamente a ciascuna applicazione: tutti i pacchetti richiesti vengono caricati su runtime. La cosa migliore del collegamento dinamico è che il caricamento dei pacchetti da parte dell'applicazione è automatico. Non è necessario scrivere codice per caricare i pacchetti, né è necessario modificare il codice.

Basta selezionare la casella di controllo "Crea con pacchetti runtime" nel Progetto | Finestra di dialogo Opzioni Alla successiva creazione dell'applicazione, il codice del progetto verrà collegato dinamicamente ai pacchetti di runtime anziché avere unità collegate staticamente nel file eseguibile.