![]() |
|
|
|
|
#1
|
|||
|
|||
|
Есть мемо и едит.В мемо есть сайты которие нужно получить через Get(просто отправить запрос),а в едите количество потоков!Как это можно зделать?С потоками никогда не работал
|
|
#2
|
||||
|
||||
|
Ну просто поучись работать с потоками... просто в цикле создавай потоки и все...
Код:
var MyThread: Array of TThread; ... SetLength(MyThread, Memo1.Lines.Count-1); for i:=0 to Memo1.lines.Count-1 do // кол-во создаваемых потоков MyThread[i]:=TThread.Create(true/false); |
|
#3
|
|||
|
|||
|
А как запросы через них каждому присваивать?Какое событие за это отвечает?И как их запустить?
Последний раз редактировалось Hamsi, 09.12.2010 в 18:19. |
|
#4
|
||||
|
||||
|
http://www.google.com.ua/search?sour...BB%D1%84%D0%B8
Сложно было заглянуть? А запуск происходит вызовом процедуры Execute. Код:
... x.Execute; // где х - поток |
|
#5
|
|||
|
|||
|
И всетаки подскажи как каждому потоку присвоить гет один,плиз
|
|
#6
|
||||
|
||||
|
Код:
unit Unit1;
interface
uses
IdHTTP,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TGetThread = class(TThread)
private
FURL: String;
FRes: String;
procedure Updt;
protected
procedure Execute; override;
public
constructor Create(AURL: String);
end;
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
c: Integer;
implementation
{$R *.dfm}
{ TGetThread }
constructor TGetThread.Create(AURL: String);
begin
inherited Create(True);
FURL:=AURL;
Resume;
end;
procedure TGetThread.Execute;
var
http: TIdHTTP;
begin
try
http:=TIdHTTP.Create(nil);
try
FRes:=http.Get(FURL);
Synchronize(Updt);
finally
http.Free;
end;
except
end;
end;
procedure TGetThread.Updt;
begin
Form1.Memo2.Lines.Add(FRes);
Form1.Memo2.Lines.Add('--------------------------------------------------');
Dec(c);
if c=0 then ShowMessage('ok');
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
c:=Memo1.Lines.Count;
for i:=0 to c-1 do
TGetThread.Create(Memo1.Lines[i]);
end;
end. |