Wanneer we een Delphi-toepassing schrijven en compileren, genereren we meestal een uitvoerbaar bestand - een zelfstandige Windows-toepassing. In tegenstelling tot Visual Basic bijvoorbeeld, produceert Delphi applicaties gewikkeld in compacte exe-bestanden, zonder grote runtime libraries (DLL's).
Probeer dit: start Delphi en compileer dat standaardproject met één blanco formulier, dit levert een uitvoerbaar bestand op van ongeveer 385 KB (Delphi 2006). Ga nu naar Project - Opties - Pakketten en schakel het selectievakje 'Bouwen met runtime-pakketten' in. Compileren en uitvoeren. Voila, de exe-grootte is nu ongeveer 18 KB.
Standaard is het selectievakje 'Build with runtime-pakketten' uitgeschakeld en elke keer dat we een Delphi-applicatie maken, koppelt de compiler alle code die uw applicatie nodig heeft om direct in het uitvoerbare bestand van uw applicatie te worden uitgevoerd. Uw applicatie is een zelfstandig programma en vereist geen ondersteunende bestanden (zoals DLL's) - daarom zijn Delphi exe's zo groot.
Een manier om kleinere Delphi-programma's te maken, is om te profiteren van 'Borland-pakketbibliotheken' of BPL's in het kort.
Pakketten stellen ons in staat om delen van onze applicatie in afzonderlijke modules te plaatsen die over meerdere applicaties kunnen worden gedeeld. Pakketten bieden ook een manier om (aangepaste) componenten in de VCL-pallete van Delphi te installeren.
Daarom kunnen door Delphi in principe twee soorten pakketten worden gemaakt:
Vanaf dit punt gaat dit artikel over runtime-pakketten en hoe deze Delphi-programmeur kunnen helpen.
Een verkeerde mit: u hoeft geen Delphi-componentontwikkelaar te zijn om te profiteren van pakketten. Beginnende Delphi-programmeurs moeten proberen met pakketten te werken - ze zullen een beter begrip krijgen van hoe pakketten en Delphi werken.
DLL's worden meestal gebruikt als verzamelingen van procedures en functies die andere programma's kunnen oproepen. Naast het schrijven van DLL's met aangepaste routines, kunnen we een compleet Delphi-formulier in een DLL plaatsen (bijvoorbeeld een AboutBox-formulier). Een andere veel voorkomende techniek is om alleen bronnen in DLL's op te slaan. Meer informatie over hoe Delphi met DLL's werkt, vindt u in dit artikel: DLL's en Delphi.
Voordat we een vergelijking tussen DLL's en BPL's gaan maken, moeten we twee manieren begrijpen om code in een uitvoerbaar bestand te koppelen: statische en dynamische koppeling.
Statische koppeling betekent dat wanneer een Delphi-project wordt gecompileerd, alle code die uw toepassing nodig heeft, rechtstreeks wordt gekoppeld aan het uitvoerbare bestand van uw toepassing. Het resulterende exe-bestand bevat alle code van alle eenheden die bij een project betrokken zijn. Te veel code, zou je kunnen zeggen. Gebruikt standaard een clausule voor een nieuwe lijst met formuliereenheden van meer dan 5 eenheden (Windows, Berichten, SysUtils, ...). De Delphi-linker is echter slim genoeg om alleen het minimum aan code te koppelen in de eenheden die daadwerkelijk door een project worden gebruikt. Met statische koppeling is onze applicatie een zelfstandig programma en vereist geen ondersteunende pakketten of DLL's (vergeet BDE- en ActiveX-componenten voorlopig). In Delphi is statische koppeling de standaardinstelling.
Dynamisch koppelen is als werken met standaard DLL's. Dat wil zeggen, dynamische koppeling biedt functionaliteit aan meerdere toepassingen zonder de code rechtstreeks aan elke toepassing te binden - alle vereiste pakketten worden tijdens runtime geladen. Het grootste ding over dynamisch koppelen is dat het laden van pakketten door uw toepassing automatisch gebeurt. U hoeft geen code te schrijven om de pakketten te laden en u hoeft ook uw code niet te wijzigen.
Vink het selectievakje 'Build with runtime packages' aan op Project | Dialoogvenster Opties. De volgende keer dat u uw applicatie bouwt, wordt de code van uw project dynamisch gekoppeld aan runtime-pakketten in plaats van dat eenheden statisch aan uw uitvoerbaar bestand worden gekoppeld.