Announcement

Collapse
No announcement yet.

Übergabe von Datasets etc in eine DLL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Übergabe von Datasets etc in eine DLL

    Hallo,

    ich benötige Hilfe. Als Programmierer einer umfangreichen Datenbank-Anwendung muß ich die Tabellen und/oder Querys eines Datenmodules in eine DLL übergeben. Für ein paar Tips währe ich sehr dankbar.

    Mfg

    R.Lütter

  • #2
    Hallo,

    die Verwendung der BDE in einer DLL unterscheidet sich von der Verwendung in einem normalen Programm, da in jedem Fall beim Beenden der Anwendung und damit beim Entladen der DLL ein zusätzlicher Arbeitschritt (<b>DbiDllExit</b>) notwendig wird. In der Delphi-Unit <b>DBTABLES</b> finden sich dazu an mehreren Stellen DLL-relevante (<i>if IsLibrary then...</i>) Aufrufe. Man kann zwar eine offene TTable-Instanz als Parameter einer Schnittstellenprozedur an die DLL übergeben und die Daten werden dort auch angezeigt, allerdings bekommt man dann einige Sekunden später einige Exceptions um die Ohren gehauen. Damit das nicht passiert, lässt sich meiner Erfahrung nach ein gewisser Aufwand nicht vermeiden:

    Ein Entwickler, der in seiner DLL auf die BDE zugreifen will, sollte die folgenden Regeln beachten: <br>
    1. Die DLL wird nicht statisch, sondern dynamisch in das Anwendungsprogramm gelinkt. Die DLL darf erst dann geladen und initialisiert werden, wenn das Programm die BDE bereits vollständig initialisiert hat und eine gültigte TSession-Instanz vorhanden ist.<br>
    2. Das Programm ruft nach dem dynamischen Laden der DLL eine exportierte Schnittstellenprozedur auf, um an die DLL die aktuellen Handels der global für die Anwendung wirkenden Objektinstanzen von TApplication, TSession und TSessionList zu übergeben. <br>
    3. Beim Entladen der DLL werden die von der VCL/BDE verwendeten globalen Variablen auf die Werte zurückgesetzt, die die DLL beim Start gesichert hat. Dazu reagiert die DLL auf das DLL-Ereignis <b>DLL_PROCESS_DETACH</b> (d.h. DllProc muss überschrieben werden)<br>
    4. Erst nachdem die DLL entladen und die Anwendung ihr eigenen Session-Handle wiederhergestellt hat, darf die Anwendung die eigene BDE-Verbindung abbauen.

    Eine nähere Beschreibung sowie ein Beispielprojekt, in dem TTable-Instanzen in einer DLL (nichtmodale Formulare) verwendet werden, findet sich im Kapitel 6 <b>BDE - ein Blick hinter die Kulissen</b> in meinem Buch <i>Client/Server Datenbankentwicklung mit Delphi</i>

    Comment

    Working...
    X