Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.048 c