Главная страница
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.49 MB
Время: 0.055 c
2-1156001510
RASkov
2006-08-19 19:31
2006.09.10
NToXY


2-1156257201
J Cara
2006-08-22 18:33
2006.09.10
Вопрос по idHTTP1.Get


2-1155816088
fast2
2006-08-17 16:01
2006.09.10
Как сделать, чтоб при нажатии на Enter, не зависимо от того, где


1-1154058249
DimonS
2006-07-28 07:44
2006.09.10
Расстояние по GPS


6-1145197754
SPACE!!
2006-04-16 18:29
2006.09.10
WinSock Api Функция "Recv" : Что делать если буфер пуст ?