BPL vs. DLL in Delphi-Programmieranwendungen

click fraud protection

Wenn wir eine Delphi-Anwendung schreiben und kompilieren, generieren wir normalerweise eine ausführbare Datei - eine eigenständige Windows-Anwendung. Im Gegensatz zu Visual Basic zum Beispiel Delphi produziert Anwendungen, die in kompakte exe-Dateien verpackt sind, ohne dass umfangreiche Laufzeitbibliotheken (DLLs) erforderlich sind.

Versuchen Sie Folgendes: Starten Sie Delphi und kompilieren Sie das Standardprojekt mit einem leeren Formular. Dadurch wird eine ausführbare Datei mit ca. 385 KB erstellt (Delphi 2006). Gehen Sie nun zu Projekt - Optionen - Pakete und aktivieren Sie das Kontrollkästchen "Mit Laufzeitpaketen erstellen". Kompilieren und ausführen. Voila, die Exe-Größe liegt jetzt bei 18 KB.

Standardmäßig ist das Kontrollkästchen "Mit Laufzeitpaketen erstellen" deaktiviert. Jedes Mal, wenn wir eine Delphi-Anwendung erstellen, verknüpft der Compiler den gesamten Code, den Ihre Anwendung benötigt, um direkt in Ihre zu laufen ausführbare Datei der Anwendung. Ihre Anwendung ist ein eigenständiges Programm und benötigt keine unterstützenden Dateien (wie DLLs) - deshalb sind Delphi-Exes so groß.

instagram viewer

Eine Art zu schaffen kleinere Delphi-Programme ist es, die Vorteile von 'Borland-Paketbibliotheken' oder kurz BPLs zu nutzen.

Was ist ein Paket?

spezielle Dynamic-Link-Bibliothek, die von Delphi-Anwendungen verwendet wird

Mithilfe von Paketen können wir Teile unserer Anwendung in separaten Modulen platzieren, die von mehreren Anwendungen gemeinsam genutzt werden können. Pakete bieten auch die Möglichkeit, (benutzerdefinierte) Komponenten in Delphis VCL-Palette zu installieren.

Daher kann Delphi grundsätzlich zwei Arten von Paketen erstellen:

  • Laufzeitpakete - bieten Funktionen, wenn ein Benutzer eine Anwendung ausführt - sie funktionieren ähnlich wie Standard-DLLs.
  • Entwurfszeitpakete - werden zum Installieren von Komponenten in der Delphi IDE und um spezielle Eigenschaftseditoren für benutzerdefinierte Komponenten zu erstellen.
Design-Pakete

Ab diesem Punkt befasst sich dieser Artikel mit Laufzeitpaketen und wie sie dem Delphi-Programmierer helfen können.

Ein falsches mit: Sie müssen kein a sein Delphi-Komponentenentwickler Pakete nutzen. Anfänger Delphi-Programmierer sollten versuchen, mit Paketen zu arbeiten - sie werden besser verstehen, wie Pakete und Delphi funktionieren.

Wann und wann keine Pakete verwendet werden

DLLs werden am häufigsten als Sammlungen von Prozeduren und Funktionen verwendet, die andere Programme aufrufen können. Neben dem Schreiben von DLLs mit benutzerdefinierten Routinen können wir ein vollständiges Delphi-Formular in eine DLL einfügen (z. B. ein AboutBox-Formular). Eine andere übliche Technik besteht darin, nur Ressourcen in DLLs zu speichern. Weitere Informationen zur Funktionsweise von Delphi mit DLLs finden Sie in diesem Artikel: DLLs und Delphi.

Bevor wir mit dem Vergleich zwischen DLLs und BPLs fortfahren, müssen wir zwei Möglichkeiten zum Verknüpfen von Code in einer ausführbaren Datei verstehen: statische und dynamische Verknüpfung.

Statische Verknüpfung bedeutet, dass beim Kompilieren eines Delphi-Projekts der gesamte für Ihre Anwendung erforderliche Code direkt mit der ausführbaren Datei Ihrer Anwendung verknüpft wird. Die resultierende exe Die Datei enthält den gesamten Code aller Einheiten, die an einem Projekt beteiligt sind. Zu viel Code, könnte man sagen. Verwendet standardmäßig eine Klausel für eine neue Formulareinheitenliste mit mehr als 5 Einheiten (Windows, Nachrichten, SysUtils, ...). Der Delphi-Linker ist jedoch intelligent genug, um nur das Minimum an Code in den Einheiten zu verknüpfen, die tatsächlich von einem Projekt verwendet werden. Mit statischer Verknüpfung ist unsere Anwendung ein eigenständiges Programm und benötigt keine unterstützenden Pakete oder DLLs (vergessen Sie vorerst BDE- und ActiveX-Komponenten). In Delphi statische Verknüpfung ist die Standardeinstellung.

Dynamische Verknüpfung ist wie das Arbeiten mit Standard-DLLs. Das heißt, die dynamische Verknüpfung bietet Funktionen für mehrere Anwendungen, ohne den Code direkt an jede Anwendung zu binden - alle erforderlichen Pakete werden unter geladen Laufzeit. Das Beste an der dynamischen Verknüpfung ist, dass das Laden von Paketen durch Ihre Anwendung automatisch erfolgt. Sie müssen keinen Code schreiben, um die Pakete zu laden, und Sie müssen Ihren Code nicht ändern.

Aktivieren Sie einfach das Kontrollkästchen "Mit Laufzeitpaketen erstellen" im Projekt | Dialogfeld "Optionen". Wenn Sie Ihre Anwendung das nächste Mal erstellen, wird der Code Ihres Projekts dynamisch mit Laufzeitpaketen verknüpft, anstatt dass Einheiten statisch mit Ihrer ausführbaren Datei verknüpft werden.

instagram story viewer