![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Всем добрый день!
Незнаю можно ли здесь это спрашивать или нет но, у меня такая проблема...авторизовываюсь в аське. использую компонент 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;![]() |