Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ADO-Komponenten initialisieren (https://www.delphipraxis.net/28935-ado-komponenten-initialisieren.html)

TomDooley 1. Sep 2004 13:38


ADO-Komponenten initialisieren
 
Hallo

Ich benutze in einem fensterlosen Programm (Treiber) ADO-Komponenten (TADOQuery). Bislang funktionierten meine Abfragen nicht. Irgendwo habe ich nun aber gelesen, dass ich folgenden Code einfügen muss:

Delphi-Quellcode:
CoInitFlags:= COINIT_MULTITHREADED;
TProcedure(System.InitProc);
Und siehe da... alles funktioniert! Ich frage mich bloss warum? Bei einem Programm mit Fenstern muss ich ja auch nichts initialisieren...

es dankt und grüsst

Tom

Bernhard Geyer 2. Sep 2004 17:18

Re: ADO-Komponenten initialisieren
 
Bei einem "Programm mit Fenstern" wird alles nötige in Application.Initialize durchgeführt.
Damit du ADO verwenden kannst, muß das COM-Subsystem für deine Anwendung initialisiert sein. Dies geschieht durch die Win32-API-Funktionen CoInitialize. Am Ende des Programms (oder wenn COM nicht mehr benötigt wird) sollte die Abmeldung mittels CoUninitialize erfolgen.

TomDooley 3. Sep 2004 08:20

Re: ADO-Komponenten initialisieren
 
Hallo

Danke für Deine Infos... Ist einleuchtend. Aber ich rufe doch CoInitialize gar nicht auf?!? Oder mach' ich das implizit durch
Delphi-Quellcode:
 TProcedure(System.InitProc);
:gruebel:
Gruss

Tom

Bernhard Geyer 3. Sep 2004 11:38

Re: ADO-Komponenten initialisieren
 
Zitat:

Zitat von TomDooley
Hallo

Danke für Deine Infos... Ist einleuchtend. Aber ich rufe doch CoInitialize gar nicht auf?!? Oder mach' ich das implizit durch
Delphi-Quellcode:
 TProcedure(System.InitProc);

Ja. Irgendwo in der InitProc wird CoInitialize aufgerufen.
Aber bei einer "Nicht-Fenster"-Anwendung würde ich nicht System.InitProc aufrufen sondern direkt CoInitialize. (Ich denke die "Restaufgaben" von System.InitProc sind in deinem Fall nicht nötig.


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