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
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.