Results 1 to 6 of 6

Thread: Packages in RunTime

  1. #1
    Senior Member rieni's Avatar
    Join Date
    Mar 2001
    Location
    Br?©ttum bij Lillehammer, Noorwegen
    Posts
    342

    Question Packages in RunTime

    Hei,
    Ook weer terug van vakantie dus... oempff....

    Het programma waar ik mee werk, wordt groter en groter.
    Daarvoor, maar ook omdat het een programma met vele mogelijke modules is, lijkt het me een goed idee om met packages te werken:
    load (in runtime) wat je nodig hebt en evt. unload als je het niet meer gebruikt.
    Wij werken alleen met Delphi, dus dat is geen probleem.

    Er is een goed artikel (+ voorbeelden) over packages:
    Object Packages Enable Highly Modular Applications

    Vraag 1:
    Wat is het voordeel van *.BPL's in vergelijking met *.DLL's ?
    Vraag 2:
    Voordat ik nu het hele programma ga omgooien: Heeft iemand ervaring met het werken met packages ? Hoe is dat ?
    Vraag 3:
    Het artikel is geschreven toen Delphi 4 in gebruik was, zou eea. aangaande packages veel veranderd zijn sindsdien ?

    Met dank,
    Rieni

  2. #2
    Hoi Rieni,

    Packages zijn goed te gebruiken om bepaalde functionaliteit te vervangen door andere functionaliteit. Heel simpel voorbeeld: je roept een routine PlaatsDialoog aan in een package en een liefhebber van geel heeft een package met gele dialogen geïnstalleerd en een liefhebber van groen heeft een package met groende dialogen geïnstalleerd. Je geeft je gebruiker dus de mogelijkheid om bepaalde functionaliteit te vervangen door andere.

    Als je packages wilt gaan gebruiken om bijvoorbeeld je runtime benodigd geheugen te beperken denk ik dat je bedrogen uit komt. Als het goed is maak je formulieren en datamodules pas aan als je ze nodig hebt en geef je ze meteen weer vrij, het maakt dan niet uit of die uit formulieren komen of uit je executable.

    Ik denk zelf dat er weinig verschil zit tussen packages en DLL's, volgens mij hebben packages alleen wat overhead zodat ze in Delphi geïnstalleerd kunnen worden. Ik heb zelf geen ervaring met dynamisch laden van packages, misschien leest mijn geachte collega mee (Marco), die heeft er veel meer mee gedaan.

    Wel interessant, ik volg de thread...
    Marcel

  3. #3
    Hoi Rieni,

    Antwoord 1: een BPL is equivalent aan een DLL. Het verschil ontstaat pas als de BPL wordt geladen met behulp van de LoadPackage functie (zie de Delphi help). Deze functie wordt automatisch gebruikt op het moment dat je je programma compileert met runtime packages. In de help staat bijvoorbeeld dat LoadPackage de initialization code van al de units in de package uitvoert. Er wordt nog veel meer gedaan, waarvan de belangrijkste is dat de RTTI (run-time type information) van de applicatie wordt samengevoegd met die van de BPL.
    Om het verhaal niet te lang te maken: met een BPL kun je bijvoorbeeld direct de globale variabelen Application en Screen benaderen, maar je kunt ook eigen globale variabelen maken. Met een DLL is dat allemaal niet mogelijk.

    Antwoord 2: ik heb ervaring en het is zeer goed bruikbaar. Tijdens de Conference to the Max dit jaar heeft Mark Miller een presentatie gegeven 'advanced dynamic applications' waarin hij de techniek zeer goed heeft uitgelegd. Mark Miller is de belangrijkste programmeur van CodeRush, een tool voor de Delphi IDE, waar je zelf je eigen plugins voor kunt schrijven. Dit is precies de omgeving waar BPL's goed voor gebruikt kunnen worden. Een ander goed voorbeeld is de Delphi IDE zelf, waar je gebruik kunt maken van de OpenTools API om plugins voor Delphi te schrijven.

    Antwoord 3: ik ken dit artikel nog niet, maar als ik zo even snel kijk dan is het nog steeds bruikbaar.

    Er is nog veel te schrijven over deze techniek. Je kunt de techniek implementeren door alleen gebruik te maken van Delphi classes (virtual abstract classes), of je kunt het oplossen met interfaces. Als je voor interfaces kiest, kun je er voor kiezen om geen BPL's maar COM dll's te schrijven wat het voordeel heeft dat je ze ook in andere programmeertalen kunt gebruiken. Als je plugin echter maar een klein beetje met visuele dingen te maken heeft (een toolbar, frame, menuitem, form o.i.d.) dan weet je zeker dan je voor BPL's moet kiezen, want dat is met (COM) DLL's niet te maken.

    Ik wist dat het een lang antwoord ging worden ;-) Dat heb je als je ergens enthausiast over bent :-) En het is helemaal geen moeilijke techniek, dus ik zou het zeker overwegen. Maar het is niet in alle gevallen bruikbaar, Marcel's opmerking hierover is zeker waar. Als je je uitbreidingen kunt zien als plugins, dus functionaliteit die je runtime kunt toevoegen, maar zonder die functionaliteit werkt je programma net zo goed, dan is het bruikbaar.

    Groeten, Marco Hemmes
    Marco Hemmes

  4. #4
    Senior Member rieni's Avatar
    Join Date
    Mar 2001
    Location
    Br?©ttum bij Lillehammer, Noorwegen
    Posts
    342

    Thumbs up

    Bedankt voor jullie antwoorden. Daar heb ik wat aan.
    Ik ben zelf al aan het experimenteren gegaan met runtime packages en ik moet zeggen dat het een openbaring voor me is en eigenlijk precies wat we willen met ons modulaire programma.
    Gebruikers krijgen een mainprogrammaatje (echt heel klein) en alleen wat ze nodig hebben halen ze van een website en kunnen ze inladen (*.BPL's). Menu, toolbar en een 'instellingen'-formulier wordt aangepast / uitgebreid enz., enz.
    Op m'n werk is iedereen heel enthousast. Heb je eenmaal één zo'n package gemaakt, laten de anderen zich gemakkelijk overerven enz.

    Ik vind dat *.BPL's toch veel makkelijker te benaderen zijn vanuit Delphi dan DLL's. Het is eenvoudiger en voor m'n gevoel gaat eea. toch sneller. Natuurlijk werken BPL's alleen met Delphi, maar als je daar voor gekozen hebt, is dat niet erg toch ?

    Het meest uitgebreide artikel over packages wat ik kan vinden is nog steeds dat van
    James Heyworth. Graag zou ik iets lezen van Mark Miller's session, maar daar vond ik alleen maar aankondigingen van op internet. Ik was helaas niet op de 'Max'.

    Rieni

  5. #5
    Senior Member rieni's Avatar
    Join Date
    Mar 2001
    Location
    Br?©ttum bij Lillehammer, Noorwegen
    Posts
    342

    Unhappy Mark Miller

    Vorige keer schreef ik:
    Graag zou ik iets lezen van Mark Miller's session, maar daar vond ik alleen maar aankondigingen van op internet. Ik was helaas niet op de 'Max'.
    Nu las ik zelfs een aankondiging dat deze Mark Miller naar Nederland komt in September, naar de Nederlandse Max zullen we maar zeggen.
    Ook daar zal hij oa. spreken over: Advanced Dynamic Applications.
    Ik ben zeer geïnteresseerd in dit onderwerp (runtime packages enz.) maar het is een beetje moeilijk (en vooral duur) om vanuit Noorwegen daar naartoe te komen.
    Weet iemand een andere manier om eventueel aan de bijbehorende artikelen / voorbeelden / papers te komen ? (Of van zijn session op de vorige 'Max')
    Kun je zulks evt. ook kopen ?


    Rieni
    rieni@miclis.no

  6. #6
    Ik kan het mis hebben, maar volgens mij mag ik je die session papers niet geven. De rechten liggen bij de SDGN en bij de auteurs.

    Je kunt wellicht de SDGN vragen, of ze je een CD van de afgelopen Conference to the Max willen sturen, maar ik weet niet of ze dat doen. Het zal wel helpen als je lid van de SDGN bent denk ik. De conferentie in septemer wordt door Borland georganiseerd en ook die informatie kun je denk ik alleen krijgen als je de conferentie bijwoont.

    De meeste kans heb je denk ik bij Marc Miller zelf. Kijk op www.eagle-software.com waar zijn email adres wel ergens zal staan.
    Marco Hemmes

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. designtime en runtime packages en requires
    By Anoniem in forum Algemeen
    Replies: 2
    Last Post: 22-Dec-04, 22:25
  2. Overload met runtime packages
    By Jamal in forum Algemeen
    Replies: 1
    Last Post: 25-Jul-03, 11:16
  3. Runtime Packages + Datamodule
    By ahollaar in forum Algemeen
    Replies: 20
    Last Post: 10-Apr-03, 00:50
  4. Runtime Packages
    By ahollaar in forum Algemeen
    Replies: 5
    Last Post: 08-Mar-03, 19:07

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •