BPL vs. DLL dans les applications de programmation Delphi

Lorsque nous écrivons et compilons une application Delphi, nous générons généralement un fichier exécutable - une application Windows autonome. Contrairement à Visual Basic, par exemple, Delphi produit applications enveloppées dans des fichiers exe compacts, sans avoir besoin de bibliothèques d'exécution volumineuses (DLL).

Essayez ceci: démarrez Delphi et compilez ce projet par défaut avec un formulaire vierge, cela produira un fichier exécutable d'environ 385 Ko (Delphi 2006). Allez maintenant dans Project - Options - Packages et cochez la case 'Build with runtime packages'. Compilez et exécutez. Voila, la taille de l'exe est maintenant d'environ 18 Ko.

Par défaut, le 'Build with runtime packages' n'est pas coché et chaque fois que nous créons une application Delphi, le compilateur relie tout le code dont votre application a besoin pour s'exécuter directement dans votre fichier exécutable de l'application. Votre application est un programme autonome et ne nécessite aucun fichier de support (comme les DLL) - c'est pourquoi les exes Delphi sont si gros.

instagram viewer

Une façon de créer petits programmes Delphi est de profiter des «bibliothèques de packages Borland» ou BPL en bref.

Qu'est-ce qu'un package?

bibliothèque de liens dynamiques spéciale utilisée par les applications Delphi

Les packages nous permettent de placer des parties de notre application dans des modules séparés qui peuvent être partagés entre plusieurs applications. Les packages fournissent également un moyen d'installer des composants (personnalisés) dans la palette VCL de Delphi.

Par conséquent, fondamentalement, deux types de packages peuvent être créés par Delphi:

  • Packages d'exécution - fournissent des fonctionnalités lorsqu'un utilisateur exécute une application - ils fonctionnent comme des DLL standard.
  • Packages de conception - utilisés pour installer des composants dans le Delphi IDE et pour créer des éditeurs de propriétés spéciaux pour les composants personnalisés.
Forfaits de conception

À partir de ce point, cet article traitera des packages d'exécution et comment ils peuvent aider le programmeur Delphi.

Un faux mit: vous n'êtes pas obligé d'être Développeur de composants Delphi pour profiter des forfaits. Les programmeurs Delphi débutants devraient essayer de travailler avec les packages - ils comprendront mieux le fonctionnement des packages et de Delphi.

Quand et quand ne pas utiliser les packages

Les DLL sont le plus souvent utilisées comme collections de procédures et de fonctions que d'autres programmes peuvent appeler. Outre l'écriture de DLL avec des routines personnalisées, nous pouvons placer un formulaire Delphi complet dans une DLL (par exemple un formulaire AboutBox). Une autre technique courante consiste à ne stocker que des ressources dans des DLL. Pour plus d'informations sur le fonctionnement de Delphi avec les DLL, consultez cet article: DLL et Delphi.

Avant de passer à la comparaison entre DLL et BPL, nous devons comprendre deux façons de lier le code dans un exécutable: la liaison statique et dynamique.

Liaison statique signifie que lorsqu'un projet Delphi est compilé, tout le code dont votre application a besoin est directement lié au fichier exécutable de votre application. L'exe résultant fichier contient tout le code de toutes les unités impliquées dans un projet. Trop de code, direz-vous. Par défaut, utilise la clause pour une nouvelle liste d'unités de formulaire de plus de 5 unités (Windows, Messages, SysUtils, ...). Cependant, l'éditeur de liens Delphi est suffisamment intelligent pour lier uniquement le minimum de code dans les unités réellement utilisées par un projet. Avec la liaison statique, notre application est un programme autonome et ne nécessite aucun package ou DLL de prise en charge (oubliez les composants BDE et ActiveX pour l'instant). Dans Delphi, liaison statique est la valeur par défaut.

Liaison dynamique c'est comme travailler avec des DLL standard. Autrement dit, la liaison dynamique fournit des fonctionnalités à plusieurs applications sans lier le code directement à chaque application - tous les packages requis sont chargés à Durée. La meilleure chose à propos de la liaison dynamique est que le chargement des packages par votre application est automatique. Vous n'avez pas besoin d'écrire de code pour charger les packages ni de changer votre code.

Cochez simplement la case «Construire avec des packages d'exécution» sur le projet | Boîte de dialogue Options. La prochaine fois que vous créerez votre application, le code de votre projet sera lié dynamiquement aux packages d'exécution plutôt que d'avoir des unités liées statiquement dans votre fichier exécutable.