Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi CoInitialize wurde nicht aufgerufen (https://www.delphipraxis.net/94083-coinitialize-wurde-nicht-aufgerufen.html)

bk_moon 15. Jun 2007 21:07

Datenbank: Access • Version: 2003 • Zugriff über: ADO

CoInitialize wurde nicht aufgerufen
 
Hallo Leute,

ich hoffe einer von Euch kann mir helfen - ich werd echt noch wahnsinnig!
Ich mach gerade meine ersten Versuche mit Delphi2007 und den IntraWeb Komponenten.
Ich wollte eigentlich eine Datenbank auslesen und als Webseite anzeigen, aber das klappt nicht.
Es kommt immer der gleiche Fehler: 'CoInitialize wurde nicht aufgerufen'.
Ich hab jetzt auch schon überall nachgeschlagen und ausprobiert, aber nichts funktioniert.

Folgender Aufbau:
Ich hab lediglich eine TADOConnection, eine TADOTable, ein TDataSource und ein TIWDBEdit auf mein Formular gezogen,
alles mit meiner Access Datenbank verbunden und gestartet. Dann kam der Fehler!
Dann habe ich CoInitialize(nil) überall ausprobiert - in der Projektdatei, vor dem Application.run, danach,
in der eigentlichen unit, im Form.Create - quasi überall. Und immer der gleiche Fehler.
Ich weiß echt nicht mehr weiter!!!

Ich hoffe einer von Euch hat eine Idee!
Schon mal vielen Dank!

Luckie 15. Jun 2007 22:49

Re: CoInitialize wurde nicht aufgerufen
 
Dann ruf doch CoInitialize auf. Ups sorry, hast du ja schon ausprobiert. Ich würde es da aufrufen, wo die Verbindung hergestellt wird. Eventuel im Initialization-Abschnitt der Unit.

alzaimar 16. Jun 2007 06:57

Re: CoInitialize wurde nicht aufgerufen
 
Vermutlich werden die ADO-Komponenten innerhalb eines Threads aufgerufen. Du musst die CoInitialize / CoUninitialize Aufrufe im Kontext des Threads ausführen, der die COM-Objekte verwendet.

bk_moon 16. Jun 2007 18:50

Re: CoInitialize wurde nicht aufgerufen
 
Erst mal Danke für Eure Unterstützung.

Also das mit dem CoInitialize in dem Initialization-Teil von der Unit hab ich probiert - leider auch ohne Erfolg.
Das mit dem Thread probiere ich gerade aus, wobei ich mir aber nicht sicher bin, wie das funktioniert.
Ich hab jetzt einen Thread erstellt (bin mir aber nicht sicher, ob ich das richtig gemacht habe) und im Execute
das CoInitialize aufgerufen:

Delphi-Quellcode:
unit Unit3;

interface

uses
  Classes, SysUtils, IWAppForm, IWApplication, IWColor, IWTypes, DB, ADODB,
  Controls, IWVCLBaseControl, IWBaseControl, IWBaseHTMLControl, IWControl,
  IWGrids, IWDBGrids, IWCompButton, ActiveX;

type
  TMyOwnThread =class(TThread)
  protected
    procedure Execute; override;
  end;

  TIWForm3 = class(TIWAppForm)
    IWDBGrid1: TIWDBGrid;
    ADOConnection1: TADOConnection;
    DataSource1: TDataSource;
    ADOTable1: TADOTable;
    IWButton1: TIWButton;
    procedure IWButton1Click(Sender: TObject);
    procedure IWAppFormCreate(Sender: TObject);
  public
  end;

implementation

{$R *.dfm}


procedure TMyOwnThread.Execute;
begin
  CoInitialize(nil);
end;

procedure TIWForm3.IWAppFormCreate(Sender: TObject);
var
  Thread: TMyOwnThread;
begin
  Thread := TMYOwnThread.Create(True);
  Thread.Execute;
end;
Das klappt aber leider auch nicht! Was kann ich sonst noch machen?

Luckie 16. Jun 2007 23:51

Re: CoInitialize wurde nicht aufgerufen
 
Ruf das am Anfang der Execute Methode auf. Dann sollte es klappen.

bk_moon 22. Jun 2007 16:38

Re: CoInitialize wurde nicht aufgerufen
 
Jetzt klappts! Vielen Dank für Eure Hilfe!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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-2025 by Thomas Breitkreuz