Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   AdoConnection in DLL (https://www.delphipraxis.net/176616-adoconnection-dll.html)

RootGrapefruit 17. Sep 2013 09:36

AdoConnection in DLL
 
Moin,
ich möchte eine AdoConnection in einer DLL verwenden.
Wenn ich ein DatenModul an die DLL anbinde und über
Delphi-Quellcode:
 
OpenDatabase:=true;
  try
    ADOConnection1.Open;
  except
    OpenDatabase:=false;
  end;
aufrufe, wird die Verbindung nicht hergestellt.

Was mache ich falsch bzw. kann ich die AdoConnection zur Laufzeit nur über die DLL erstellen und verwenden?

Danke für eure Hilfe :D

sx2008 17. Sep 2013 09:51

AW: AdoConnection in DLL
 
Du das Verschlucken der Exception nimmst du dir jede Möglichkeit die Fehlermeldung zu Gesicht zu bekommen:
Delphi-Quellcode:
OpenDatabase:=true;
try
  ADOConnection1.Open;
except
  OpenDatabase:=false;
  // niemand wird je erfahren was in der Message der Exception gestanden hat
end;
Lass das try...except einfach weg.

RootGrapefruit 17. Sep 2013 10:06

AW: AdoConnection in DLL
 
Achso ja so hab ich das davor versucht :D

'Zugriffsverletzung bei Adresse 004D10BC in Modul 'ISAPI_DLL.dll'. Lesen von Adresse 000000058.'

Danach hab ich auch schon geguckt, hab aber keine Lösung gefunden.

baumina 17. Sep 2013 10:17

AW: AdoConnection in DLL
 
Sicherlich ist deine ADOConnection1 = NIL, d.h. es fehlt ein create.

RootGrapefruit 17. Sep 2013 11:14

AW: AdoConnection in DLL
 
Also wenn ich vor der Verbindung ein
Delphi-Quellcode:
AdoConnection1.Create(self);
schreibe kommt die gleiche Fehlermeldung schon beim create.
Im Create Ereignis des DataModuls wird
Delphi-Quellcode:
 AdoConnection1.Create(self);
gar nicht erst aufgerufen bzw die Exception kommt wieder genau wie vorher beim Öffnen der Connection.

mkinzler 17. Sep 2013 11:20

AW: AdoConnection in DLL
 
Ein Konstruktor ist eine Klassenmethode, es muss

Delphi-Quellcode:
AdoConnection1 := TAdoConnection.Create(self);
heissen!

RootGrapefruit 17. Sep 2013 13:33

AW: AdoConnection in DLL
 
Ah OK Danke jetzt sagt er mir beim Erstellen der ADO Connection 'CoInitialize wurde nicht aufgerufen'.
Ich habe schon
Delphi-Quellcode:
OleInitialize(nil);
direkt vor dem Create und im Create Ereignis des DataModuls ausprobiert.

Edit: Beim Aufrufen direkt vor der Erstellung der ADO Connection kommt wieder die alte Fehlermeldung:
'Zugriffsverletzung bei Adresse 004F8B00 in Modul 'test.dll'. Schreiben von Adresse 0000000058.'

baumina 17. Sep 2013 13:50

AW: AdoConnection in DLL
 
Du sagst, Du benutzt ein DataModul, evtl. solltest du dieses createn und nicht nur die ADOConnection.

RootGrapefruit 17. Sep 2013 13:59

AW: AdoConnection in DLL
 
Kannst du mir noch sagen wie und wo ich das Createn soll? :stupid:

baumina 17. Sep 2013 14:07

AW: AdoConnection in DLL
 
So in etwa:

Delphi-Quellcode:
unit DMMyDataModule;
interface
 ...
type
   TMyDataModule = class(TDataModule)
     ...
   end;

var
   MyDataModule: TMyDataModule;
   
implementation
 ...
initialization
   MyDataModule := TMyDataModule.Create(nil);
finalization
   MyDataModule.Free;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 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