• XSS.stack #1 – первый литературный журнал от юзеров форума

Считывание данных авторизации

Dark Koder

(L2) cache
Пользователь
Регистрация
21.03.2010
Сообщения
364
Реакции
142
Доброго времени суток!
Подскажите мне пожалуйста,как мне сделать в Delphi-приложении правильную многопоточность и правильное считывание данных вида
Код:
логин;пароль
?
Вот мой быдлокодец:
Код:
procedure TPMain.HackClick(Sender: TObject);
var
tempStream: TStringStream;
html:string;
begin
//razdelitel:=';';
//data:=TIdMultiPartFormDataStream.Create;
i:=0;
AssignFile(Vf,'Logins.txt');
Reset(Vf);
//AssignFile(Vf2,'Passwords.txt');
while not eof(Vf) do
Begin
i:=i+1;
ReadLn(Vf,login);
login:=Copy(buff,1,Pos(';',buff)-1);
pass:=Copy(buff,Pos(';',buff)+1,length(buff));
//pb.Progress:=100*i div bar;
///CloseFile(Vf); тут ошибка-этого закрытия тут НЕ ДОЛЖНО БЫТЬ,а оно должно быть в 141-й строке!
Sleep(1000);
MessageBox(0,'Данные успешно загружены!','Проктолог',0);

//pb.Progress:=0;
End;
Проблема в том,что я не понимаю,как можно сделать считывания пары логин;пароль отдельно для каждой записи в файле Logins.txt и в отдельном потоке обрабатывать события для них.
Почитав про потоки я понял примерно,что схема будет примерно такая:
Загрузили данные,если тру=грузим в отдельный поток и отрабаываем,иначе на начало...
Но вся соль вот встала в правильной обработке этих вот входных данных
 
Ну перед созданием потоков прочитать файл в StringList, а в потоках уже брать построчно и в глобальную переменную инкремент писать для строки, чтобы следующий поток брал новую строку, ну и все это дело в критическую секцию обернуть.
 
Apocalypse я никогда не занимался многопоточностью в делфи. У тебя под рукой нет примера реализации чего-либо подобного? Что бы глянуть и сразу врубиться. Т.е. без заморочек и танцов.
 
Apocalypse,это как в критическую секцию?
el-,есть,но мне нужно без него (так как я изначально без него кодил с учетом и упором на API и поменьше компонентов...)
 
Ar3s,о,видео то что надо... как буду дома попробую переделать)
З.Ы: Если всё заворкает как надо,оформлю версию для дамаги :)
 
Quake3,хм, в Делфе еще не приходилось такое юзать...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Dark Koder
Там все просто:
инициализация секции сначала через InitializeCriticalSection , потом, когда подходишь к чтению из файла (или что там надо синхронизировать), вызываешь EnterCriticalSection, после вызова этой функции получаешь эксклюзивное чтение из файла (в это время другие потоки не имеют туда доступа), как сделал - вызываешь LeaveCriticalSection, и все.
 
У меня вопрос очередной.
Взял я по совету уважаемых товарисчей критическую секцию и потом thread из видеоурока от Ar3s'a (за что ему отдельное спасибо),но загвозка в том,что я не уверен как лучше сделать: или в потоке thread сделать обработку и подключение к сайту, или же сделать отдельно все это...
Просто после просмотра видео-кода и небольшой правки у меня получилось 3 идеи,и я не знаю какую выбрать...
1. взять и закодить обработку данных для подключения из файла в процедуру threaв...
2.в классе thread сделать только парсинг данных...
3. вообще весь код тупо туда поместить и только дёргать вызовы...
что скажете7
З.Ы: полный код я приложу чуток позже-сейчас не дома...
 
Dark Koder
Ты ведь брутфорс какой пишешь? :)
Я обычно делал так - парсингом занимается основная программа, потихоньку считывающая данные из файла и засовывающая их в очередь для последующей обработки. А потоки висят и ждут когда в очереди появятся новые данные, вытаскивают их, и проводят затем с очередной парой все необходимые действия (пробуют залогиниться или что там надо с ними делать).
Поэтому мне кажется лучше было бы в любом случае не загружать потоки парсингом - это не нужно, они должны делать уже только то, ради чего ты и затеивал многопоточность (сетевые операции всяко медленней, чем считывание данных из файла).
Поэтому ты можешь
а) использовать секции для организации thread-safe очереди
б) взять готовую thread-safe очередь, например
:D
 
кгхм,ну вот таки добрался до компа своего...
вот короче весь полный код (откомментировал как мог...) в моём стиле...
Куда туда запихнуть критическую секцию и потоки синхро я хз даже.. потерялся в коде >_<
Rghost ТыЦ
пасс->
X-Cod
попытался всунуть перед всеми функами,но забросил...
чуть обновленный код-*.pas
Если кто может-помогите в этой хрени...
З.Ы: Не пинайте сильно за быдлокодец... :pioneer:
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх