![]() |
Thread und TIDHTTP
Hallo,
ich bekomme bei folgendem Code eine Access Violation.
Code:
Der Code wird in einem Thread ausgeführt.
procedure TProxyCheck.Execute;
var pcheck: TIdHTTP; begin pcheck := TidHttp.create(nil); end; Woran kann das liegen ? Grüße stiftII |
AW: Thread und TIDHTTP
sicher dass der Code an dieser Stelle auftritt, ist der Thread erzeugt worden?
|
AW: Thread und TIDHTTP
Danke für die schnelle Antwort.
Der Fehler war tatsächlich nicht an der Stelle...
Code:
TProxyCheck = class(TThread)
temp:string; protected procedure start; procedure stop; procedure execute; end;
Code:
hat im Thread wohl den Fehler ausgelöst.
temp := '';
Warum ist eine solche Zuweisung im execute Thread ungültig ? geht sowas nur über den constructor ? |
AW: Thread und TIDHTTP
ist zwar ein seltsamer Eintrag, mach bei mir aber wenn wie beschrieben eingefügt keinen Ärger...
weil ich schon ewig mit den Indy's nicht mehr gemacht habe hab ich mir den Spass gemacht ...
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, StdCtrls; type TCallBack = Procedure(Const Content:String) of object; TTestThread=Class(TThread) Private FS:String; FCallBack:TCallBack; procedure Showtext; public constructor Create( CreateSuspended : Boolean;CallBack:TCallBack );overload; destructor Destroy; override; Procedure Execute; override; End; TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private procedure CallBack(const s: String); public end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.CallBack(Const s:String); begin Memo1.Lines.Add(s) end; procedure TForm1.Button1Click(Sender: TObject); begin TTestThread.Create(false,CallBack); end; { TTestThread } constructor TTestThread.Create(CreateSuspended: Boolean;CallBack:TCallBack); begin inherited Create(CreateSuspended); FreeOnTerminate := true; FCallBack := CallBack; end; destructor TTestThread.Destroy; begin inherited; end; procedure TTestThread.Showtext; begin if Assigned(FCallBack) then FCallBack(FS); end; procedure TTestThread.Execute; var IdHTTP1 : TIdHTTP; ss:TStringStream; begin inherited; ss:=TStringStream.Create; IdHTTP1:= TIdHTTP.Create(nil); try IdHTTP1.Get('http://www.google.de',ss); ss.Position := 0; FS := ss.ReadString(ss.Size); Synchronize(Showtext); finally ss.Free; IdHTTP1.Free; end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 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