AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Connection an Dll übergeben

Ein Thema von BerTa · begonnen am 3. Aug 2005 · letzter Beitrag vom 3. Aug 2005
Antwort Antwort
BerTa

Registriert seit: 31. Aug 2004
Ort: Dinklage
78 Beiträge
 
Delphi 7 Enterprise
 
#1

Connection an Dll übergeben

  Alt 3. Aug 2005, 10:40
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?
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Connection an Dll übergeben

  Alt 3. Aug 2005, 10:49
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.
  Mit Zitat antworten Zitat
BerTa

Registriert seit: 31. Aug 2004
Ort: Dinklage
78 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Connection an Dll übergeben

  Alt 3. Aug 2005, 11:29
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
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#4

Re: Connection an Dll übergeben

  Alt 3. Aug 2005, 11:36
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?
  Mit Zitat antworten Zitat
BerTa

Registriert seit: 31. Aug 2004
Ort: Dinklage
78 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Connection an Dll übergeben

  Alt 3. Aug 2005, 13:49
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 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