Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
1-1154073074
Андрей Пл
2006-07-28 11:51
2006.09.10
Фунлция которая выдает количество раз вхождения подстроки


3-1151744812
Lis'S
2006-07-01 13:06
2006.09.10
Пробелы в таблицах БД


2-1155725809
Mikka Hakkinnen
2006-08-16 14:56
2006.09.10
Нужно динамически создать/удалить несколько Series.


9-1134888099
CrZarkon*
2005-12-18 09:41
2006.09.10
Milkshape


15-1155142507
Джо
2006-08-09 20:55
2006.09.10
MIDlet Pascal — вопли и жалобы




   Наверх