AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADOQuery in DLL spinnt
Thema durchsuchen
Ansicht
Themen-Optionen

ADOQuery in DLL spinnt

Ein Thema von gsh · begonnen am 11. Mär 2006 · letzter Beitrag vom 29. Mär 2006
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

ADOQuery in DLL spinnt

  Alt 11. Mär 2006, 16:09
Datenbank: Microsoft Access-Datenbank • Zugriff über: Mit ADOQuery und ADOConnection
Hi DPler

Ich hab ein großes Problem. Ich ein Programm geschrieben das auf die Datenbank zugegriffen hat. Alles wunderbar. Bis ich mich entschied alles in eine DLL zu packen. Naja jetzt ist alles in der DLL und er bringt nur noch Fehler. Ich habe ja nichts vom Code geändert ist jetzt alles was die Datenbank angeht in die DLL gepackt. Jetzt kommt der Witz dabei der Fehler tritt auf nachdem er die procedure SQLBefehl 8-10 durch hat. Es ändert sich der SQL befehl nicht einmal. Und wo des ganze im Programm war hat alles wunderbar funktioniert

Delphi-Quellcode:
procedure SQLBefehl(SQL : String); stdcall;
begin
  ADOQuery.Active := false;
  ADOQuery.SQL.Clear;
  ADOQuery.SQL.Add(SQL); <--- Hier kommt der Fehler. Im Anhang
  ADOQuery.Active := true;
end;

function QueryData(FeldName : String) : Variant; stdcall;
begin
  result := ADOQuery[FeldName];
end;

exports SQLBefehl, QueryData;

begin
  ADOQuery := TADOQuery.Create(nil);
  ADOConnection := TADOConnection.Create(nil);
  ADOQuery.Connection := ADOConnection;
  ADOConnection.ConnectionString := cADOConnectionString;
  ADOConnection.Mode := cmShareExclusive;
  ADOConnection.Provider := 'MSDASQL.1';
end.
Miniaturansicht angehängter Grafiken
fehler_312.jpg  
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: ADOQuery in DLL spinnt

  Alt 11. Mär 2006, 16:23
Mache aus der DLL ein Package und du kannst sogar Strings nehmen. Außerdem wird die VCL bei einer Delphi EXE + Delphi DLL zweimal geladen. Packages sind Delphis ClassLibs, DLLs sollten IMHO nur benutzt werden wenn man auch mit anderen Sprachen auskommen will.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#3

Re: ADOQuery in DLL spinnt

  Alt 11. Mär 2006, 16:32
ich will aus verschiedenen Gründen eine DLL benutzen
also mein prob. warum funkt des nicht
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#4

Re: ADOQuery in DLL spinnt

  Alt 12. Mär 2006, 06:02
Hallo!

Hast Du daran gedacht, die Unit ShareMem als erste Unit aufzunehmen?
Das ist bei String-Parametern in einer DLL nötig (jedenfalls bei früheren Delphi-Versionen). Beim Erzeugen einer neuen Unit sollte das auch da drin stehen.

Alternative: PChar oder ShortString verwenden.

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
Die 6 Probleme des Programmierers: 1. dauert das länger, als man 2. glaubt, 3. geht das nicht so, wie man sich das 4. schlau überlegt hat, und 5. sitzt der Fehler da, wo man ihn 6. zuletzt sucht
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#5

Re: ADOQuery in DLL spinnt

  Alt 12. Mär 2006, 10:22
ja aber warum kann des der fehler sein?
wenn ich debuge wird der string ja wunderbar übergeben

Ich ich werds mal mit PChar probieren


//edit: Danke
Jetzt funktionierts , ich verstehs trotzdem nicht warum (kann mir jemand des erklären? würd mich interessieren)
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
MikeZ

Registriert seit: 12. Mär 2006
Ort: München
1 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: ADOQuery in DLL spinnt

  Alt 12. Mär 2006, 10:31
Du musst das COM-Subsystem mit CoInitialize(nil); vor dem Verwenden von COM-Objecten in DLLs initialisieren, und beim Entladen der DLL wieder mit CoUnInitialize; aufräumen. Bei multithreaded Anwendungen sollte in jedem Thread ein CoInitialize/CoUnInitialize Paar in der Execute-Methode stehen.

use ActiveX (bzw. OLE2 in älteren Delphi-Versionen)


ShareMem wird eigentlich nur benötigt, wenn man in extern deklarierten Funktionen Delphi-Strings verwenden will.
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#7

Re: ADOQuery in DLL spinnt

  Alt 12. Mär 2006, 11:15
und für was braucht man des CoInitialize bzw. CoUnInitialize?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#8

Re: ADOQuery in DLL spinnt

  Alt 22. Mär 2006, 16:31


Ich hab des jetzt alles wunderbar zum laufen gebracht auch ohne CoInitialize(nil);
Naja und plötzlich (ohne des ich beim laden der DLL oder bei der DLL selbst etwas verändert hab) kann er diesen Befehl nicht mehr ausführen:
ADOQuery := TADOQuery.Create(nil); Fehler: im Anhang

Das einzige was ich beim Prog. verändert hab war das ich eine TWebBrowser kompo gelöscht habe (hat nichts mir der Datenbank zu tun). Auch wenn ich sie wieder hinzufüg dann gehts nicht mehr
Miniaturansicht angehängter Grafiken
fehler_127.png  
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#9

Re: ADOQuery in DLL spinnt

  Alt 23. Mär 2006, 09:12
*push*
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#10

Re: ADOQuery in DLL spinnt

  Alt 26. Mär 2006, 22:09
*push²*
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 16:36 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