Проблема такая, код приведенный ниже делаю без потока, и все работает нормально за исключением подвисания формы, как только делаю поток (код см ниже) при запуске программы выдает я понял что трабл в этой части кода Подскажите кто нибудь в чем может быть проблема и как ее исправить! Code: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, StdCtrls,ActiveX,MSHTML, ExtCtrls, ComCtrls; type TForm1 = class(TForm) Button1: TButton; WebBrowser1: TWebBrowser; Memo1: TMemo; Button2: TButton; Timer1: TTimer; StatusBar1: TStatusBar; procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; ////////////обьявляю поток tnew = class(tthread) private protected IE:TInternetExplorer; procedure execute; override; end; /////////////// var Form1: TForm1; xvatit:integer; new: tnew; implementation {$R *.dfm} procedure tnew.execute; var HtmlDocument: IHtmlDocument2; HtmlCollection: IHtmlElementCollection; HtmlElement: IHtmlElement; I: Integer; opnum:integer; allstr:WideString; begin form1.Button1.Enabled:=false; xvatit:=0; {for z:=0 to 2147483500 do begin if xvatit = 1 then begin xvatit := 0; exit; end;} repeat HtmlDocument := form1.WebBrowser1.Document as IHtmlDocument2; HtmlCollection := HtmlDocument.All; for I := 0 to HtmlCollection.Length - 1 do begin HtmlElement := HtmlCollection.Item(i, 0) as IHtmlElement; allstr :=allstr+' '+HtmlElement.outerHTML; end; //form1.Update; //Application.ProcessMessages; sleep(200); opnum := pos('#ffffff"><B>op',allstr); //#f9b7ff if opnum=0 then else begin allstr := Copy(allstr, opnum+12,opnum+28); opnum := pos('</B>',allstr); allstr := Copy(allstr,1,opnum-1); form1.Memo1.Lines.Add(allstr+' Был снят в:'+TimeToStr(now)); //Application.ProcessMessages; sleep(200); form1.WebBrowser1.Navigate('http://xxx.ru/index.html'); //Application.ProcessMessages; sleep(200); end; //form1.Update; allstr:=''; {end;} until xvatit = 1; end; procedure TForm1.Button1Click(Sender: TObject); begin new := tnew.create(true); new.freeonterminate := true; new.priority := tpnormal; new.resume; end; procedure TForm1.FormCreate(Sender: TObject); begin form1.WebBrowser1.Navigate('http://xxx.ru/index.html'); end;
Уже нашел решение, прям мистика какаято, ищу-ищу не могу найти, стоит запостить тут сразу нахожу то что нужно, проблема решилась следующим способом просто в потоке свою процу обьявить как метод и запускать с синхронизацией! Сабж:http://www.interface.ru/home.asp?artId=6105
Я тоже сталкивался с этим, но в моём случае я сделал посылку сообщений форме типа wm_user+n и в обработчике этого сообщения уже брал из глобальной переменной адрес и грузил его.