Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.10;
Скачать: CL | DM;

Вниз

TidHTTP в потоке   Найти похожие ветки 

 
Паша777   (2006-08-21 15:41) [0]

Подскажите плиз
Как осуществить запрос
ТidHTTP.Get(zapros, otwet);
и получить от него ответ
в потоке

Заранее спасибо


 
Reindeer Moss Eater ©   (2006-08-21 15:45) [1]

Интереснее вопрос как умудриться сделать это не в каком бы то ни было потоке


 
Пусик ©   (2006-08-21 15:53) [2]

 THTTPThread=class
   FQ: String;
   FResult: String;
   procedure Execute; override;
   constructor Create(const Query: String);
 end;

constructor THTTPThread.Create(const Query: String);
begin
 inherited Create(True);
 FQ := Query;
 FreeOnTerminate := True;
end;

procedure THTTPThread.Execute;
var
 Idh: TIdHTTP;
begin
 Idh := TIdHTTP.Create(nil);  
 try
   FResult := Idh.Get(FQ);
 except
   FResult := "";
 end;
 Idh.Free;
end;

TForm1=class(TForm)

private
 procedure OnThreadTerminate(Sender: TObject);

procedure TForm1.OnThreadTerminate(Sender: TObject);
begin
 Memo1.Lines.Text := THTTPThread(Sender).FResult;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 with THTTPThread.Create("http://ya.ru") do
 begin
   OnTerminate := OnThreadTerminate;
   Resume;
 end;
end;


 
Паша777   (2006-08-21 16:00) [3]

Извиняюсь за неточость формулировки
Создаются дополнительные потоки в программе
Каждый поток должен посылать свой запрос на различные сайты
и полученный ответ записывать в лог

Есть ли какиеь нибудь ньюансы в посылке запроса и получения ответа из потоков ?
Спасибо


 
Сергей М. ©   (2006-08-21 16:02) [4]


> Есть ли какиеь нибудь ньюансы в посылке запроса и получения
> ответа из потоков ?


Нет никаких нюансов.
А если есть проблемы, то излагай их подробно.


 
Паша777   (2006-08-21 18:41) [5]

Перенес [2] и получил
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, IdHTTP, StdCtrls;

type
 TForm1 = class(TForm)
   Memo1: TMemo;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);

 private
 procedure OnThreadTerminate (Sender:TObject);
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
type
THTTPThread=class (TThread)
  FQ: String;
  FResult: String;
  procedure Execute; override;
  constructor Create(const Query: String);
end;

implementation

{$R *.dfm}

constructor THTTPThread.Create(const Query: String);
begin
inherited Create(True);
FQ := Query;
FreeOnTerminate := True;
end;

procedure THTTPThread.Execute;
var
Idh: TIdHTTP;
begin
Idh := TIdHTTP.Create(nil);
try
  FResult := Idh.Get(FQ);
except
  FResult := "";
end;
Idh.Free;
end;

procedure TForm1.OnThreadTerminate(Sender:TObject);
begin
Memo1.Lines.Text:=THTTPThread(Sender).FResult;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

with THTTPThread.Create("http://ya.ru")do

 begin
 OnTerminate:=OnThreadTerminate;
 Resume;
 end;
end;

end.


Разьясните пожалуйста, почему
при нажатии на кнопку создается 3 потока
и они не завершаются ?
Спасибо


 
Пусик ©   (2006-08-21 19:17) [6]


> Разьясните пожалуйста, почему при нажатии на кнопку создается
> 3 потока и они не завершаются ?


Один поток главный, один создаешь ты, один создает Indy.
Твой уничтожается после Free, остается 2.

Если интересно, почему Indy оставляет поток, читай исходники.


 
Паша777   (2006-08-22 01:39) [7]

У меня с вышеприведенным мною кодом
до клика 1 поток
после клика сначала 5 затем 4 остается
поэтому и пишу может где напартачил......

Пусик спасибо огромное за помощь.....



Страницы: 1 вся ветка

Текущий архив: 2006.09.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
15-1155426441
SerJaNT
2006-08-13 03:47
2006.09.10
Выбор машины


15-1155631422
Александр Иванов
2006-08-15 12:43
2006.09.10
Мартин Файлер "Рефакторинг"


15-1155104429
McSimm
2006-08-09 10:20
2006.09.10
Turbo News


3-1152171333
Maverick
2006-07-06 11:35
2006.09.10
TADOQuery+output параметры


15-1156107099
Владимир_мпп
2006-08-21 00:51
2006.09.10
Часовой пояс?