Cyberaxx - Mi 25.07.07 10:45
Titel: Zeos DB Comps in DLL und main App verursacht zugriffsverletz
Hallo,
habe hier im Forum und auch im Zeos forum schon einige male gesucht aber bin nicht wirklich fündig geworden.
Ich nutze die Zeos Komponenten um auf einen MS SQL Server zuzugreifen.
In meiner Main App habe ich ein Datenmodul mit einer ZConnection drauf.
Über ein Plugin manager werden Plugins in das Menü geladen.
Als Protokoll verwende ich mssql!
Auf der Main App ist die Connection bereits aktiv.
Bei klick auf ein Plugin wird die DLL geladen und jeweils dort das Datenmodul und das Formular erstellt
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure Execute(AppDir: PChar); stdcall; begin try DM := TDm.Create(nil); Obst_und_Gemuese_Normal_Frm := TObst_und_Gemuese_Normal_Frm.Create(Obst_und_Gemuese_Normal_Frm); Obst_und_Gemuese_Normal_Frm.AppDir := AppDir; Obst_und_Gemuese_Normal_Frm.ShowModal; finally Obst_und_Gemuese_Normal_Frm.Free; DM.Free; end; end; |
Auf dem Datenmodul befindet sich nur die ZConnection, weiter nichts.
Die DLL startet und wenn ich sie sofort wieder schließe ohne einmal auf die
Connection zuzugreifen klappt alles wunderbar.
Wenn ich innerhalb der DLL eine Abfrage auf die Datenbank mache klappt auch alles soweit.
Sobald ich aber versuhe die Forum zu schliessen und das Datenmodul wieder freigeben mag kommt folgende
Fehlermeldung:
| Zitat: |
Anwendungsfehler
---------------------------
Exception EAccessViolation in Modul ntwdblib.dll bei 00036D68.
Zugriffsverletzung bei Adresse 73356D68 in Modul 'ntwdblib.dll'. Lesen von Adresse FEEEFEEE.
---------------------------
OK
--------------------------- |
Gebe ich das Datenmodul nicht Frei, komt sie natürlich nicht.
Der Debugger zeigt mir dazu noch folgendes.
Delphi-Quelltext
1: 2: 3: 4:
| function TZDBLibMSSQL7PlainDriver.dbClose(dbProc: PDBPROCESS): RETCODE; begin Result := ZPlainDBLibMSSql7.dbClose(dbProc); end; |
Das aber auch nicht immer. Die DLL zu debuggen ist nicht leicht.
Das gleiche Problem tritt auch auf wenn ich inerhalb der DLL eine weitere DLL aufrufe. Diese hat allerdings kein
Datenmodul sondern nur direkt eine ZConnection. Die DLL läuft auch sauber durch aber wenn ich dann das DLL Formular
schliessen will welches die Dll geladen hat kommt die gleiche Exception.
Kann mir hier jemand vllt weiterhelfen? Ich stehe damit absolut auf dem Schlauch. :(
Gruß
Daniel
P.S.: Sollte evtl. auch noch anmerken, das wenn ich in der Form erst das Datenmodul erstelle, es ebenfalls diese Exception auslöst.
[Edit]
| Zitat: |
---------------------------
Anwendungsfehler
---------------------------
Exception Exception in Modul Angebotsverwaltung_Main.exe bei 000F0FD8.
Ungültiger Parameter in DB-Library-Funktionsverweis.
.
---------------------------
OK
--------------------------- |
Diese Meldung bekomme ich ohne Debugger, ist mir eben aufgefallen, als ich die Exe so startete.
[edit]
Mir ist eben aufgefallen, das es ohne Probleme läuft, wenn ich als Protokoll ado verwende, sprich nen
ODBC Treiber. Dieser erlabt es mir jedoch nicht das ich Transaktionen durchführen kann. Zumindest tauchen da nun
ständig Fehler auf.
[/edit]
Moderiert von
Tino: Topic aus Sonstiges (Delphi) verschoben am Do 26.07.2007 um 09:46