Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   innerhalb TThread: Problem mit IXMLHTTPRequest bzw. CoXMLHTTP (https://www.delphipraxis.net/162151-innerhalb-tthread-problem-mit-ixmlhttprequest-bzw-coxmlhttp.html)

Rob09 9. Aug 2011 15:51

Delphi-Version: 5

innerhalb TThread: Problem mit IXMLHTTPRequest bzw. CoXMLHTTP
 
Hi!

Ich möchte gerne Informationen von Webseiten innerhalb eines TThread-Objekts abrufen (quasi im Hintergrund), damit währenddessen der User ohne Beeinträchtigung mit dem Programm arbeiten kann. Ich benutze dazu die unit MSXML2_TLB. An der Stelle, wo
Code:
req := CoXMLHTTP.Create;
steht (req ist vom Typ IXMLHTTPRequest), bekomme ich - wenn der Code ausgeführt werden soll - die folgende Fehlermeldung:

Project ... raised exception class EOleSysError with message 'CoInitialize wurde nicht aufgerufen'. Process stopped. Use Step or Run to continue.

Es wäre sehr nett, wenn mir jemand weiterhelfen könnte, denn das sagt mir überhaupt nichts. Wie gesat, meine Absicht ist nur, dass im Hintergrund eine Website abgerufen wird. Hier ein minimales Code-Beispiel, wo der Fehler auftritt:

Delphi-Quellcode:
unit Unit1;

...
type

  TForm1 = class(TForm)
  ...
  private
    Fred: TFred;
  ...
  end;

...

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Fred := TFred.Create(True);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Enabled := False;
  Fred.Resume;
end;

end.
Delphi-Quellcode:
unit uTFred;

...

type
  TFred = class(TThread)
  private
    FSeite: String;
    procedure HoleSeite;
  protected
    procedure Execute; override;
  end;

implementation

uses
  MSXML2_TLB, OleCtrls;

procedure TFred.Execute;
begin
  HoleSeite;
end;

procedure TFred.HoleSeite;
var
  req: IXMLHTTPRequest;
begin

  // FEHLER AN DIESER STELLE:
  req := CoXMLHTTP.Create;
  // exakte Stelle innerhalb der Create-Methode s. nächster Code-Block...

  req.open('GET', 'http://www.delphipraxis.net/', False, {Username} EmptyParam, {Passwort} EmptyParam);
  req.send(EmptyParam);
  FSeite := req.responseText;
end;

end.
Der Fehler tritt dabei exakt an folgender Stelle auf:

Delphi-Quellcode:
unit MSXML2_TLB;

...

implementation

...

class function CoXMLHTTP.Create: IXMLHTTPRequest;
begin
  Result := CreateComObject(CLASS_XMLHTTP) as IXMLHTTPRequest;
end;
Wo liegt das Problem? Bitte um Nachsicht, habe bisher weder mit Threads noch mit WWW-Funktionen gearbeitet.

Beste Grüße!
Robert

PS:
Ich benutze Delphi 6.

DeddyH 9. Aug 2011 15:57

AW: innerhalb TThread: Problem mit IXMLHTTPRequest bzw. CoXMLHTTP
 
CoInitialize wurde nicht aufgerufen

Bernhard Geyer 9. Aug 2011 15:59

AW: innerhalb TThread: Problem mit IXMLHTTPRequest bzw. CoXMLHTTP
 
Zitat:

Zitat von Rob09 (Beitrag 1115837)
... die folgende Fehlermeldung:

Project ... raised exception class EOleSysError with message 'CoInitialize wurde nicht aufgerufen'. Process stopped. Use Step or Run to continue.

Es wäre sehr nett, wenn mir jemand weiterhelfen könnte, denn das sagt mir überhaupt nichts.

Was sagt uns wohl diese Fehlermeldung: Mann soll eine Funktion CoInitialize aufrufen.
Wenn du nach diesen Fehlertext "Hier im Forum suchenCoInitialize wurde nicht aufgerufen" suchen würdest du 59 gleichgeartete Fragestellungen finden welche auch oft die Lösung beinhalten:stupid:

Rob09 9. Aug 2011 16:07

AW: innerhalb TThread: Problem mit IXMLHTTPRequest bzw. CoXMLHTTP
 
Oh, wie peinlich - das hätte ich ja nun wirklich finden finden können :oops:

Vielen Dank für eure Hilfe :thumb: - ich gelobe Besserung :wink:

Beste Grüße!
Robert


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