
27.10.2008, 00:12
|
|
Новичок
Регистрация: 16.08.2006
Сообщений: 20
С нами:
10387026
Репутация:
8
|
|
2diznt - код вообще не верный. много багов.
Чтобы данные передавать сделай вот так к примеру:
Код:
unit threadHTTP;
interface
uses
Classes, SysUtils, IdHTTP, Dialogs,HTTPApp;
type
TGrabThread = class(TThread)
private
protected
procedure Execute; override;
public
http: TIdHTTP;
url: string;
html: string;
count : Integer;
ResponseCode : Integer;
procedure Sync;
constructor Create(Suspended: boolean);
end;
implementation
Uses main;
constructor TGrabThread.Create(Suspended: boolean);
begin
inherited Create(Suspended);
end;
procedure TGrabThread.Execute;
begin
http := TIdHTTP.Create(nil);
http.ConnectTimeout := 30000;
http.ReadTimeout := 30000;
html := '';
try // в треде делаем запрос к нашему урлу
html:=http.Get(url);
finally
http.Free;
end;
Synchronize(Sync); // возвращаем результат в главный тред
end;
procedure TGrabThread.Sync;
begin
// Здесь у нас есть переменные url и html
// делаем с ними что хотим
// если html = '' then не удалось получить страницу
end;
end.
Ну и это в основном потоке:
Код:
with TGrabThread.Create(true) do // создаём тред
begin
url:='http://www.google.ru';
FreeOnTerminate := true;
Count := 13;
Resume; // запускаем тред
end;
Да и на блоге у меня много примеров многопоточного кода на дельфях. 
|
|
|