Показать сообщение отдельно

  #2257  
Старый 27.10.2008, 00:12
vid
Новичок
Регистрация: 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;
Да и на блоге у меня много примеров многопоточного кода на дельфях.
 
Ответить с цитированием