PDA

Просмотр полной версии : [Помогите!] Прокси в потоке по кругу


Erstown
09.03.2013, 17:02
Вот нашел темку с кодом на форуме.

procedure TNewThread.Execute;
var CurAcc:integer;
data:Tstringlist;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
begin
while Work do
begin
CS.Enter;
Inc(Acc);
if Acc<Mails.Count then CurAcc:=Acc else Work:=false;
CS.Leave;

if Work then
begin
{HTTP}
HTTP := TId[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
if Proxy.Text = '' then sleep(0) else //Если прокси не загружены, то ничего не делаем
begin
IP:= Copy(Proxy[CurAcc],1,Pos(':',Proxy[CurAcc])-1); Port:=Copy(Proxy[CurAcc],Pos(':',Proxy[CurAcc])+1,Length(Proxy[CurAcc]));
[Ссылки могут видеть только зарегистрированные и активированные пользователи] //Вставляем прокси
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Port); //Вставляем порт
end;


С потоками я пока что на "ВЫ", вот решил попросить помощи у Вас. Нужно переделать код, чтобы он просто брал прокси из Memo по кругу, если прокси не рабочий, то удалял его, чтобы в следующий раз снова не натыкаться на него. То есть если список прокси подошел к концу, он начинал брать прокси из списка заново(С первого прокси) до конца и так пока я не остановлю потоки.

metraz
09.03.2013, 17:36
сделай цепочку мемо-потоковый стринг лист, иначе проблем много будет.
а проверку прокси можно сделать путем обращения на myip.ru или ya.ru. и если результат плохой, то удалить строчку из мемо(либо стринглиста)

Erstown
09.03.2013, 17:50
сделай цепочку мемо-потоковый стринг лист, иначе проблем много будет.
а проверку прокси можно сделать путем обращения на myip.ru или ya.ru. и если результат плохой, то удалить строчку из мемо(либо стринглиста)
Я не очень понимаю, как сделать, чтобы прокси из мемо доставались по кругу.

Добавлено через 1 час 29 минут
Нужно просто, чтобы прокси ставились по кругу, пока не остановлю потоки. Никаких аккаунтов нету, просто нужно вставлять прокси.

Добавлено через 4 часа 19 минут
var
Proxy:string;
i:integer;
MyThread:TMyThread;
begin
if Length(Memo1.Text) = 0 then
ShowMessage('Поле для Proxy пусто')
else
if Length(Memo3.Text) = 0 then
ShowMessage('Поле Logi пусто')
else
for i := 0 to Memo1.Lines.Count-1 do
Proxy:=Memo1.Lines[i];
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Proxy,1,Pos(':' ,Proxy)-1);
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Copy(Proxy,Po s(':',Proxy)+1,Length(Proxy)));
[Ссылки могут видеть только зарегистрированные и активированные пользователи] 10000;
MyThread:=TMyThread.Create(True);
MyThread.FreeOnTerminate:=true;
MyThread.Priority:=tpLower;
MyThread.Resume;
Вот нашел еще один код на форуме, вроде рабочий, как сделать чтобы он прокси брал по кругу? Даже после того, как дойдет до конца, начинал брать с начала.

Рэйзор
10.03.2013, 13:27
while true do
begin
end;
горе программисты /dgs

VeTaL_UA
10.03.2013, 22:58
while true do
begin
end;
Предпочитаю while 1 :D

mad_cat
11.03.2013, 08:09
чтобы прокси из мемо доставались по кругу
глобально var CurProxy:integer;
в самом начале работы CurProxy:=0;
в вашем найденном коде

var buf:string;
{.....}
buf:=ProxyMemo.lines[CurProxy];
{тут бы еще проверку на валид прокси но это оставлю вам раз уж взялись программировать}
[Ссылки могут видеть только зарегистрированные и активированные пользователи](buf,1,Pos(':' ,buf)-1);
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Copy(buf,Pos( ':',buf)+1,Length(buf)));
inc(curProxy);
if Curproxy>MemoProxy.Lines.count-1 then CurProxy:=0;