Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO und Thread (https://www.delphipraxis.net/14280-ado-und-thread.html)

Jacki O 6. Jan 2004 09:41


ADO und Thread
 
Hallo,
ich habe eine kleine Appliction, die mittels ADO-Komponenten auf eine ACCESS DB zugreift. Alles klappt wunderbar, damit die Anwenung jedoch bedienbar bleibt, soll das Auslesen der ACCESS DB in einem Thread laufen. Dabei erhalte ich nun die Fehlermeldung: "CoInitialize must be called". Ich habe schon etwas über OLE und ActiveX gelesen, aber in meinem Thread funktioniert das leider nicht :(

Kann man mir helfen ?

Gruß Jacki

Jens Schumann 6. Jan 2004 09:53

Re: ADO und Thread
 
Hallo,
der Zugriff auf ADO ist ein Zugriff auf COM-Objekte.
Für den Zugriff muss jeder Thread ein eigenes Apartment anmelden.
Für das Hauptprgramm sollte das Application.Initialize erledigen.
Wenn Du aber einen Thread erzeugst musst Du das selber machen
Delphi-Quellcode:
procedure TMyADOThread.Execute;
begin
  CoInitialize(nil); // Apartment anmelden
  try
    // Hier kann dann Dein Code stehen
  finally
    CoUninitialize; // Apartment abmelden
  end;
end;
Hier findest weitere Info's vom COM Guru himself
Entwickler Forum

Jacki O 6. Jan 2004 10:30

Re: ADO und Thread
 
Hallo,

vielen Dank für den Tip, ich weder gleich den Umbau starten :coder:

Gruß Jacki

Kedariodakon 11. Nov 2004 09:50

Re: ADO und Thread
 
Hab ähnliches Problem, wollte eine TADOConnection in einen Thread packen, aber wenn ich die Verbindung öffne, wird der Thread gleich terminiert...

Liegt das auch daran?

Muß ich auch so ein ...Apartment anmelden...???

Und wannn genau muß man das machen?

Bevor man die schon erstellt, oder erst wenn ich die Verbindung öffnen will?


Bye

Bernhard Geyer 11. Nov 2004 10:03

Re: ADO und Thread
 
Zitat:

Zitat von Kedariodakon
Hab ähnliches Problem, wollte eine TADOConnection in einen Thread packen, aber wenn ich die Verbindung öffne, wird der Thread gleich terminiert...

Liegt das auch daran?

Ja. Probier einfach mal das gleiche.

Zitat:

Zitat von Kedariodakon
Bevor man die schon erstellt, oder erst wenn ich die Verbindung öffnen will?

Ich würde sofort bei Starten des Threads das Appartment anmelden. Ist am sichersten.

Kedariodakon 11. Nov 2004 10:06

Re: ADO und Thread
 
Tja ich bekomme immer:


Code:
[Fehler] FConThread.pas(76): Undefinierter Bezeichner: 'CoInitialize'
CoUninitialize Das selbe....


In welcher Unit ist diese Procedure Engebunden?


Bye


Edit: ActiveX habs gefunden... :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.

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