Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Connection an Dll übergeben (https://www.delphipraxis.net/50937-connection-dll-uebergeben.html)

BerTa 3. Aug 2005 09:40


Connection an Dll übergeben
 
Hallo Leute,

ich bastle gerade an einem Projekt, dass aus einer EXE und mehreren DLLs bestehen soll. Als Datenbank benutze ich MySql und greife über MyDAC darauf zu. Die Connection soll in der EXE gemacht werden und dann an die DLLs übergeben werden. Ich hab es mit der Übergabe der Adresse der Connection versucht, leider funktioniert es nicht. Hat jemand eine Idee?

Olli 3. Aug 2005 09:49

Re: Connection an Dll übergeben
 
Darf ich fragen was eine "Connection" ist? Ist es ein Handle, oder einfach eine Speicheradresse, oder irgendein abstrakter Wert?

Mach dir folgendes bewußt. DLLs allein können keinen Code ausühren. Dies können sie nur, wenn sie in einen Prozeßkontext geladen wurden/werden. Du siehst, es macht keinen Unterschied, ob die Connection in deiner "EXE" oder deiner "DLL" erstellt und dann in einen anderen Bereich innerhalb desselben Prozesses übergeben wird.

Handletabellen sind pro-Prozeß - genau wie Speicheradressen. Daher weiß ich noch nicht genau, was du wohl meinen könntest mit "Connection". Läuft der Code in deiner DLL in einem anderen Thread, oder innerhalb des Hauptthreads der Anwendung? Dies wäre mein letzter Ansatz. Alles andere wird sich ohne Codesample mglw. nicht lösen lassen.

BerTa 3. Aug 2005 10:29

Re: Connection an Dll übergeben
 
Hallo Olli,

die MyDac-Connection habe ich als nicht sichtbare Komponente auf der 1. Form in der EXE platziert. Als Eigenschaften kann man z.B. "server" und "user" einstellen, um dann über die Methode "connect" eine Verbindung zur Datenbank herzustellen. Die Komponente ist doch somit ein Objekt, das beim Erzeugen der Form mitgeneriert wird. Sie hat aber wie z.B. ein label kein Handle. Die Dll läuft im gleichen Thread, ich weiss jedoch nicht wie ich von dort aus auf die Kompo zugreifen soll, um sie dort den Datenbank-Querys zuzuordnen.

Danke, BerTa

Olli 3. Aug 2005 10:36

Re: Connection an Dll übergeben
 
Naja, eigentlich hat die DLL genauso Zugriff auf eine Komponente wie dei EXE. Ein Objekt wird ja durch seinen Zeiger und seine Klassendeklaration charakterisiert. Es sollte IMO also möglich sein direkt den Objektzeiger in die DLL durchzureichen, da diese ja auf den gleichen Speicher zugreift. Eventuell ist das Einbinden von ShareMem (in uses) nötig, aber ich denke eigentlich eher nicht.

Wenn also die DLL die Klassendeklaration kennt, sollte es nach meinem Verständnis kein Problem geben. DLL und EXE sind doch beide in Delphi (und derselben Version) verfaßt, oder?

BerTa 3. Aug 2005 12:49

Re: Connection an Dll übergeben
 
Hallo Olli,

es funktioniert! Es muss irgendwo anders ein Fehler in meiner DLL stecken. Ich hab ein neues kleines Projekt erstellt und kein Problem dabei.

Vielen Dank,

BerTa


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz