Цитата:
Сообщение от icWasya
1) перенести переменную i из метода Execute в поля класса Searcher.
2) из метода Execute убрать цикл.
3) Button1Click переписать так
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Threads: integer;
begin
URL := Edit1.Text + '/memberslistxml/?xml=1&p=';
for Threads := 0 to 4 do
begin
Th[Threads] := Searcher.Create(True);
Th[Threads].i := Threads;
Th[Threads].FreeOnTerminate := true;
Th[Threads].Resume();
end;
end;
|
Код:
type
Searcher = class(TThread)
private
FHTTPS: THTTPSend;
FLIST, FHTML: TStringList;
FRegExp: TRegExpr;
protected
procedure Execute; override;
procedure sync;
procedure setheaders;
public
i: integer;
end;
var
Form1: TForm1;
URL: string;
Th: array [0 .. 5] of TThread;
implementation
{$R *.dfm}
{ Searcher }
procedure Searcher.Execute;
begin
FHTTPS := THTTPSend.Create;
FLIST := TStringList.Create;
FHTML := TStringList.Create;
FRegExp := TRegExpr.Create;
try
setheaders;
FHTTPS.HTTPMethod('GET', URL + inttostr(i));
begin
FHTML.Clear;
FHTML.LoadFromStream(FHTTPS.Document, TEncoding.UTF8);
if pos('<steamID64>', FHTML.Text) > 0 then
begin
FRegExp.Expression := '<steamID64>(.*?)</steamID64>';
if FRegExp.Exec(FHTML.Text) then
repeat
Synchronize(sync);
until not FRegExp.ExecNext;
end;
end;
finally
FreeAndNil(FHTTPS);
FreeAndNil(FLIST);
FreeAndNil(FHTML);
FreeAndNil(FRegExp);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Threads: integer;
begin
URL := Edit1.Text + '/memberslistxml/?xml=1&p=';
for Threads := 0 to 4 do
begin
Th[Threads] := Searcher.Create(True);
Th[Threads].i := Threads;
Th[Threads].FreeOnTerminate := True;
Th[Threads].Resume();
end;
end;
Сделал так , как вы сказали.
При компиляции ошибка:
Код:
[dcc32 Error] Project.pas(98): E2003 Undeclared identifier: 'i'