Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

09.07.2008, 00:57
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме: 4037638
Репутация:
1821
|
|
Сообщение от Nightmarе
ICQClient1 - а ведь точно угодали что я под него пишу, хотя я про него не упомянал...
В общем я пытаюсь массовую смену паролей организовать для UIN`ов, вот мой код:
Код:
procedure TForm1.FlatButton7Click(Sender: TObject);
var
i,n:dword;
s,s2:string;
begin
uins.Lines.LoadFromFile(FlatEdit5.text);
for i:=0 to uins.Lines.Count-1 do
begin
n := pos(';',uins.Lines.Strings[i]);
If (n > 0) then
begin
masslogin.Clear;
masslogin.text := copy(uins.Lines.Strings[i],1,n-1);
//memo2.Lines.Add(s);
inc(n);
masspass.Clear;
masspass.text := copy(uins.Lines.Strings[i],n,length(uins.Lines.Strings[i]) - n+1);
//memo3.Lines.Add(s);
ICQClient1.ConvertToPlaintext := True; //Convert RTF text to plain (when you don't use TRichEdit)
ICQClient1.ICQServer := 'login.icq.com'; //Default login server
ICQClient1.ICQPort := 5190; //Default login port
ICQClient1.Password := masspass.text; //Set password
ICQClient1.UIN := StrToInt(masslogin.text); //Set UIN
ICQClient1.Login; //Login to server!
end;
end;
uins - это мемо в которое получаем список uin;pass
masslogin - сюда в цикле кидаем логин
masspass - сюда в цикле кидаем пасс
Далее функция авторизирования и смены паролей (ICQClient1.Login):
Код:
procedure TForm1.ICQClient1Login(Sender: TObject);
begin
if ICQClient1.LoggedIn then
begin
ICQClient1.ChangePassword('ну тут нужный пароль который будет') ;
Label1.Caption:='Успешно!!!';
end;
В итоге успешно меняется пасс тока у самого последнего ICQ номера в списке...
Понять не могу где же ошибка...
Все бы ничего....кроме одной мелочи)
-------------
Всего лишь мелочи....
-------------
Заметь ты юзаешь цикл, а компоненту что бы залогинить номер нужно пару секунд!
Вот теперь смотри, ты юзаешь(на form1) только один компонент, а цикл проходит быстро, следовательно номера не успевают залогиниться, коннектится только последний потому что он последний...
-------------
Выход из этой жопной ситуации:
1) Юзать таймер - скорость маленькая
2) Юзать массив компоненнтов - лучший выход.
другому не быть...ля ля тополя - вот так вот...
отсюда вывод код не верный!
его надо переделывать....
или же код верный но его надо втыкать в таймер, что приведет к другой жопе, к снижению скорости смены пароля...
----
У меня все, спс за внимание
----------
P.S. прет меня сорри
|
|
|

09.07.2008, 01:00
|
|
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме: 10046345
Репутация:
4589
|
|
Юзай потоки, и забудь ты про компоненты, памяти сожрешь немеряно!
|
|
|

09.07.2008, 12:06
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
1680
|
|
Сообщение от Dober'man
Простейший выход: if ioresult=0 then continue else continue - если его предыдущий код правильный (не смотрел) то произойдет обработка каждого уина!!!
Пасиб, в какое место этот код ставить надо???
|
|
|

11.07.2008, 00:15
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
1680
|
|
Dober'man плз!!! если не затруднит напиши код как это реализовать, какой нить самый простой способ.
|
|
|

11.07.2008, 03:03
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
1680
|
|
masslogin.text masspass.text - это вообще то edit`ы
У меня такой принцип, открываем файл, и кидаем в цикле в едиты соответствено логин и пароль разделяя их ; это сделанно для того чтобы я мог непосредственно удобно иметь к ним доступ из едитов....
|
|
|

11.07.2008, 04:08
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
1680
|
|
Что именно мне надо дописать подскажи плз с примерным кодом.
Последний раз редактировалось Nightmarе; 11.07.2008 в 13:11..
|
|
|

11.07.2008, 22:41
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
1680
|
|
Пробую так:
Код:
procedure TForm1.FlatButton7Click(Sender: TObject);
var
i,n:dword;
s,s2:string;
begin
uins.Lines.LoadFromFile(FlatEdit5.text);
for i:=0 to uins.Lines.Count-1 do
begin
n := pos(';',uins.Lines.Strings[i]);
If (n > 0) then
begin
loginmemo.lines.add(copy(uins.Lines.Strings[i],1,n-1));
//memo2.Lines.Add(s);
inc(n);
passmemo.lines.add(copy(uins.Lines.Strings[i],n,length(uins.Lines.Strings[i]) - n+1));
//memo3.Lines.Add(s);
ICQClient1.ConvertToPlaintext := True; //Convert RTF text to plain (when you don't use TRichEdit)
ICQClient1.ICQServer := 'login.icq.com'; //Default login server
ICQClient1.ICQPort := 5190; //Default login port
ICQClient1.Password := passmemo.Lines[i]; //Set password
ICQClient1.UIN := StrToInt(loginmemo.Lines[i]); //Set UIN
ICQClient1.Login; //Login to server!
end;
end;
Где: loginmemo - это memo с UIN`ами, ну а passmemo - это пароли.
Не меняется ни у одного номера...
Сообщение от Dober'man
Видишь строку, отмеченную красными плюсиками, вот туда нужно добавить этот вызов.
Название добаляемой процедуры:
Код:
procedure TForm1.ICQClient1Login(Sender: TObject);
На одну линию выше и так прописанно уже ICQClient1.Login; это вызов этой функции и есть если я не ошибаюсь.
|
|
|

11.07.2008, 23:41
|
|
Banned
Регистрация: 15.12.2005
Сообщений: 95
Провел на форуме: 1509352
Репутация:
132
|
|
Nightmarе
Выложи архивчики с твоим TICQ и проектом, подправлю... а то смотрю не клеится у вас ниче в слепую 
|
|
|

11.07.2008, 23:49
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме: 4037638
Репутация:
1821
|
|
Сообщение от qPhoenix
Nightmarе
Выложи архивчики с твоим TICQ и проектом, подправлю... а то смотрю не клеится у вас ниче в слепую 
посмотри мой пост, и поспрашивай про это у людей с асечки, видишь ли тут меня признали не правым...не люблю спорить...
|
|
|

12.07.2008, 00:13
|
|
Banned
Регистрация: 15.12.2005
Сообщений: 95
Провел на форуме: 1509352
Репутация:
132
|
|
Сообщение от De-visible
посмотри мой пост, и поспрашивай про это у людей с асечки, видишь ли тут меня признали не правым...не люблю спорить...
Конечно цикл здесь неуместен, и код изначально дубообразный, но все же можно кримеру вставить ожидание while not ICQ.LoggedIn do sleep(1000); , али еще ченить придумать, но массив из *** коннектящихся компонентов это тоже перебор..
ИМХО для такого вопроса нужно юзать евенты OnError OnLogoff OnInfoChanged, и отталкиваясь от них уже двигать дальше...
Последний раз редактировалось qPhoenix; 12.07.2008 в 04:49..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|