Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2010, 13:43   #1
Ra1n
 
Аватар для Ra1n
 
Регистрация: 24.01.2010
Сообщений: 5
Вопрос Последовательная отсылка одного и того же сообщения со списка UIN на 1 номер ICQ

У меня есть список UIN (ListBox1) и список паролей к ним соответственно (ListBox2). Мне надо, что постепенно с каждого UIN со списка отсылалось одно и тоже сообщение на один номер ICQ (его ввожу в Edit1). Столкнулся с проблемой - все что делаю, то сообщение идет только с последнего номера (понимаю, что чтото не так в цикле). Помогите кто-нить - дайте отрезок рабочего цикла, а то уже 3 день голову ломаю и ничего не получается.

Работаю с компонентом TICQClient

P.S. Незнаю, правильно ли я раздел выбрал, если что - то sorry
Хотите меня отблагодарить - бросьте монетку:
Z122717110322 ; E337948685310 ; U174175658238 ; R288787571440
Ra1n вне форума Ответить с цитированием
Старый 29.01.2010, 15:38   #2
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Код:
for i:=0 to ListBox1.Items.Count -1 do
begin
   LogIn(ListBox1.Items.String[i], ListBox2.Items.String[i]); //процедура, которая логинится в ICQ по имени и паролю
   Send(StrToInt(Edit1.Text)); //процедура, которая отсылает сообщение на номер
end;
Вроде этого достаточно)
TwiX вне форума Ответить с цитированием
Старый 29.01.2010, 16:04   #3
Ra1n
 
Аватар для Ra1n
 
Регистрация: 24.01.2010
Сообщений: 5
По умолчанию

Хм.....
Цитата:
LogIn(ListBox1.Items.String[i], ListBox2.Items.String[i]); //процедура, которая логинится в ICQ по имени и паролю
Она немного другая:
Код:
ICQClient1.UIN:=strtoint(ListBox1.Items[i]); //  UIN
ICQClient1.Password:=(ListBox2.Items[i]);    // Пароль
ICQClient1.Login();                          // Соединяемся
Цитата:
Send(StrToInt(Edit1.Text)); //процедура, которая отсылает сообщение на номер
Эта тоже немного по другому:
Код:
IcqClient1.SendMessage(StrToInt(Edit1.text),''+Memo1.Lines.Strings[i]+''); //Отсылаем текст
А в общем, если даже и исправить эти процедуры, то тогда вообще не отсылает (даже с последнего номера):

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
Var n, i: integer; z: integer;
begin
z:=StrToInt(Edit1.text);
 for i:=0 to ListBox1.Items.Count-1 do
begin
ICQClient1.UIN:=strtoint(ListBox1.Items[i]); //  UIN
ICQClient1.Password:=(ListBox2.Items[i]);    // Пароль
ICQClient1.Login();                          // З"єднуємось
ICQClient1.SendMessage(z,''+Memo1.Lines.Strings[i]+''); //Надсилаємо повідомлення
end;
end;
Хотите меня отблагодарить - бросьте монетку:
Z122717110322 ; E337948685310 ; U174175658238 ; R288787571440
Ra1n вне форума Ответить с цитированием
Старый 29.01.2010, 16:22   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

подход к задаче следует поменять
забыли обработку статуса подключения - ICQClient1.OnLogin и сделайте скажем таймер (поток) внутри которого будет происходить смена номера по флагу:
Код:
timesetevent(3000,0,@Ontmr2,0,1); // время не важно, все равно по флагу разрешение
i:= 0;
ICQClient1.OnLogin:= Login;
...

procedure Ontmr2(uTimerID, uMessage: uint;dwUser, dw1, dw2: dword) stdcall;
begin
 if not flag then begin
  ICQClient1.UIN:=strtoint(ListBox1.Items[i]); //  UIN
  ICQClient1.Password:=(ListBox2.Items[i]);    // Пароль
  ICQClient1.Login($10000000);                     // Соединяемся

  inc(i); if i> listbox2.items.count-1 then i:=0;
  flag:= true 
 end
end;


procedure icqsock.Login(Sender: TObject);
begin
 ICQClient1.MaskIntoQIP($09090909); //маскируемся под QIP
 // желательно задержку
 ...
 //
 ICQClient1.SendMessage(uin, txt); // посылаем сообщение
 // желательно задержку
 ...
 //
 ICQClient1.Login(S_OFFLINE); // отключаемся 
 flag:= false // разрешаем подключение под новым номерам
end;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 29.01.2010 в 16:24.
raxp вне форума Ответить с цитированием
Старый 29.01.2010, 16:37   #5
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Я имел в виду, что Login и Send будут написаны вручную)
Тогда, если мне не изменяет память, то у ICQClient есть свойство logged или что-то подобное, но я могу ошибся, то можно и так:

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
Var n, i: integer; z: integer;
begin
z:=StrToInt(Edit1.text);
 for i:=0 to ListBox1.Items.Count-1 do
begin
 ICQClient1.UIN:=strtoint(ListBox1.Items[i]); //  UIN
 ICQClient1.Password:=(ListBox2.Items[i]);    // Пароль
 ICQClient1.Login();                          // З"єднуємось
 while (not ICQClient1.Logged) do sleep(200); //ждём пока не залогинимся
 ICQClient1.SendMessage(z,''+Memo1.Lines.Strings[i]+''); //Надсилаємо   повідомлення
 ICQClient1.Login(S_OFFLINE);
end;
end;

Последний раз редактировалось TwiX; 29.01.2010 в 16:42.
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как избежать повторение одного и того же номера дважды CockPuncher Microsoft Office Excel 6 03.09.2009 09:53
ICQ сообщения jone Работа с сетью в Delphi 2 02.10.2008 19:59
как отправить сообщения на Асю (icq) Ermak Работа с сетью в Delphi 8 19.09.2007 19:57
Мой номер icq украли и я хочу его вернуть Hallo Свободное общение 32 13.12.2006 01:01