помогите пожалуйста
вот все потоки работают только есть проблеммы
1.например пишеш 1 поток он их делает 2
2.указываеш к примеру с 1 по 10 а он парсит до 50:shock:
3.зависает программа до окончания процесса
что делать?(
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent,regexpr, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
StdCtrls, sSkinManager, sLabel, IdAntiFreezeBase, IdAntiFreeze, Spin;
type
potok = class(TThread)
private
str: string;
nomer : Integer;
protected
procedure Execute; override;
public
procedure synchro;
constructor Create(CreateSuspended: Boolean);
end;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Str:string;
i:integer;
reg:tregexpr;
a: array [1..10] of potok;
implementation
constructor potok.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;
procedure potok.Execute;
var
i:integer;
begin
for I := strtoint(form1.Edit1.text) to strtoint(form1.edit2.text) do
begin
sleep(1000);
synchronize(synchro);
end;
end;
procedure potok.synchro
var
s:string;
begin
inc(i);
Str:=form1.idhttp1.Get('http://......../tipper/reporting/lboard.php?&lang=&session_id='+inttostr(i));
form1.label4.caption:='Страница '+Inttostr(i)+' из '+form1.edit2.text;
begin
reg:=TRegExpr.create;
begin
Reg.expression:='text-align:left;(.*?)</td><td class=';
if reg.exec(str) then
repeat
s:=Copy(reg.match[1],0,Length(reg.match[1]));
s:=s;
form1.memo1.lines.Add(s);
until not Reg.ExecNext;
end;
end;
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if savedialog1.Execute then
memo1.Lines.SaveToFile(savedialog1.FileName+'.txt');
end;
procedure TForm1.Button2Click(Sender: TObject);
var pot:integer;
begin
if edit2.Text<edit1.text then
begin
showmessage('Конечный индекс должен быть больше начального')
end
else
begin
memo1.clear;
for pot:=1 to spinedit1.Value do
a[pot]:=potok.Create(false);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
idhttp1.Free;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
label3.Caption:='Ссылок получено '+inttostr(memo1.Lines.Count);
end;
{ Potok }
end.