|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
TICQClient - авторизация
Всем добрый день!
Незнаю можно ли здесь это спрашивать или нет но, у меня такая проблема... авторизовываюсь в аське. использую компонент ICQClient... вот код. Код:
procedure TForm1.Button1Click(Sender: TObject); begin ICQClient1.LogOff; ICQClient1.ConvertToPlaintext := True; ICQClient1.UIN:=strtoint(edit1.Text); ICQClient1.Password:=edit2.text; ICQClient1.ICQServer := 'login.icq.com'; ICQClient1.ICQPort := 5190; ICQClient1.Login; end; procedure TForm1.ICQClient1Login(Sender: TObject); begin ListBox1.Items.Add('true!'); end; procedure TForm1.ICQClient1ConnectionFailed(Sender: TObject); begin ListBox1.Items.Add('false!'); end; это всё работает хорошо (авторизовывается)... проблема вот в чем сделав цикл диапозона uin'ов в listBox1 ни чего не происходит... а сам цикл идет очень быстро (авторизоваться явно не успевает или ещё что ) делаю так: Код:
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i:=strtoint(edit1.Text) to strtoint(edit3.Text) do begin ICQClient1.LogOff; ICQClient1.ConvertToPlaintext := True; ICQClient1.UIN:=i; ICQClient1.Password:=edit2.text; ICQClient1.ICQServer := 'login.icq.com'; ICQClient1.ICQPort := 5190; ICQClient1.Login; Application.ProcessMessages; end; end; procedure TForm1.ICQClient1Login(Sender: TObject); begin ListBox1.Items.Add('yes!'); end; procedure TForm1.ICQClient1ConnectionFailed(Sender: TObject); begin ListBox1.Items.Add('no!'); end; авторизация явно не происходит... в чем ошибка? и как это можно исправить? если вообще можно обсуждать это |
#2
|
|||
|
|||
дак у тебя происходит всё на одном и том же компоненте. тебе нужно для каждого UIN'а создавать новый компонент в цикле
и вообще, не хорошо писать брут для асек )) |
#3
|
||||
|
||||
Знаю что не хорошо
Цитата:
а ни как не получится чтоли использовать один компонент? ... а при успешной авторизации отключаться (LogOFF) и проверять следующий UIN? как то просто не понятно слишком (( зачем создавать для каждого подключения отдельный компонент |
#4
|
|||
|
|||
как так зачем? ты label1 может одновременно назначить 2 Caption? нет. тут точно так же. Либо нужно делать LogOff после проверки UIN'а, чего в коде у тебя нет. а вот как проверить успешно авторизован UIN или нет, это уже зависит от этого компонента, а я его не разу в глаза не видел.
|
#5
|
||||
|
||||
я вот тожа никогда не видел и никогда не использовал TICQClient, но смотря на код из 1 поста могу смело утверждать, что TICQClient использует асинхронный обмен. поэтому данный подход (цикл логофф/логин) тут не годитца. "продолжение" цикла должно быть в событиях успешной/неуспешной авторизации/ошибки подключения.
Пишу программы за еду. __________________ |
#6
|
||||
|
||||
Попробуй что-нибудь типа:
Код:
type TForm1 = class(TForm) private ... public procedure DoLogin; end; var LoginNum: Integer; implementation procedure TForm1.DoLogin; begin Inc(LoginNum); if LoginNum > strtoint(edit3.Text) then Exit; ICQClient1.LogOff; ICQClient1.ConvertToPlaintext := True; ICQClient1.UIN:=LoginNum; ICQClient1.Password:=edit2.text; ICQClient1.ICQServer := 'login.icq.com'; ICQClient1.ICQPort := 5190; ICQClient1.Login; end; procedure TForm1.Button1Click(Sender: TObject); begin LoginNum := strtoint(edit1.Text); DoLogin; end; procedure TForm1.ICQClient1Login(Sender: TObject); begin ListBox1.Items.Add('yes!'); DoLogin; end; procedure TForm1.ICQClient1ConnectionFailed(Sender: TObject); begin ListBox1.Items.Add('no!'); DoLogin; end; Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#7
|
||||
|
||||
Писал такую штуку Пока админ не прикрыл тему, оставлю свои "координаты в подписи". Напиши, помогу чем-нибудь
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |