ICQ - форум. Всё про ICQ.  

Вернуться   ICQ - форум. Всё про ICQ. > Мастерская > Программирование

Программирование C / C++ / Visual C++ / Delphi / Visual Basic / ASM / Windows / Pascal

 
 
Опции темы Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.48.
Старый 28.05.2007, 06:59   #1
Участник
 
Регистрация: 06.08.2006
Сообщений: 243

ICQ: 272727765

Репутация: 406
По умолчанию TICQClient - исправления, дополнения и прочее

В этой теме будут выкладываться исправления и дополнения к компоненту TICQClient от Кобана для Delphi.


Компонент, актуально работающий на 13.08.2010
скачать: TICQClient
Пример работы с компонентом:
скачать: СheatICQ
Официальный хелп от coban2k
скачать: TICQClientHelp.rar



==============================

Оригинальный компонент (с демо): скачать


Компонент с работающими прокси и кодировками скачать тут


Компонент от Romen'a (с демо):
- движок на ICQ
- к архиве есть все необходимые модули (для WSocket'a от ICS 1.4, плюс из RxLib несколько модулей)
- из компонента убрано все "лишнее"
скачать

Демки делались в Turbo Delphi 2006, поэтому если вы будете собирать их под Delphi 7 и ниже не забудте в насткойках проекта указать пути, иначе среда не найдет эти модули и будет ругаться на их отсутствие.



1) Project -> Options
2) Закладка Directories/Conditionals
3) -> Units output directory: Units
-> Search path: ICQClient

Последний раз редактировалось DjFly; 04.02.2012 в 20:23.
Sax-mmS вне форума  
Плюсанули Sax-mmS — 3 :
Старый 07.12.2009, 02:53   #901
Супер Модератор
 
Аватар для DjFly
 
Регистрация: 07.07.2007
Сообщений: 845

По умолчанию

Dmitrii_M, в компоненте не рабочие прокси ;) то есть рабочие, но с какой стороны посмотреть.
DjFly вне форума  
Старый 10.12.2009, 20:06   #902
Участник
 
Регистрация: 01.09.2009
Сообщений: 3

Репутация: 2
По умолчанию

DjFly,
у меня несколько вопросов по поводу авторизации собеседника. Использую версию компонента 1.35a, читая мануал никак не могу разобраться : как добавить в серверный контакт-лист собеседника, чтобы при следующем заходе в сеть тот был в списке?
для добавления в список имеется два случая: 1) если собеседник запросил авторизацию; 2) если я сам добавляю собеседника в контакт-лист.

вот простой пример из мануала :
procedure TMainForm.Button1Click(Sender: TObject);
begin
ICQClient1.SSLChangeStart(Fals e);
ICQClient1.SSLAddGroup('My Good Friends', 0010); //Create group 'My Good Friends' with id 0010
ICQClient1.SSLAddGroup('Me lovers', 0011); //Create group 'Me lovers' with id 0011
ICQClient1.SSLAddUser(0010, 0020, '4024781', 'Coban', '', False, False);
...
ICQClient1.SSLChangeEnd;
это я так понимаю создается группа и в нее добавляются контакты,
но если у контакта должен быть свой id, как его сгенерировать? как вообще добавить собеседника, не зная ни его id, ни id группы заранее?

И какая же последовательность действий должна быть, если я хочу кого-либо авторизовать?

Надеюсь на вашу помощь :)

Последний раз редактировалось LOSTeam; 10.12.2009 в 20:09.
LOSTeam вне форума  
Старый 10.12.2009, 21:53   #903
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

Репутация: 302
По умолчанию

Прочитай внимательнее эту же страничку откуда ты скопировал пример, но на 10 строчек повыше, ты не поверишь, но там все это расписано :)
__________________
Лучший ICQ софт и не только - http://ухич.рф
Онлайн чекеры - http://ухич.рф/checkers (Снова в строю :)
yxu вне форума  
Плюсанул yxu :
Старый 11.12.2009, 23:35   #904
Участник заблокирован
 
Регистрация: 26.10.2008
Сообщений: 434

Репутация: 1122
По умолчанию

расписано то расписано, но это не работает
.skyer вне форума  
Плюсанул .skyer :
Старый 12.12.2009, 07:25   #905
Участник
 
Регистрация: 07.12.2009
Сообщений: 2

Репутация: 1
По умолчанию Пустой List

Будьте добры, помогите с проблемой, описанной мной в этой
теме(http://forum.volkov.spb.su/index.php?topic=13862.0) на форуме посвященном TIcqClient.
Dmitrii_M вне форума  
Старый 12.12.2009, 22:41   #906
Участник
 
Регистрация: 01.09.2009
Сообщений: 3

Репутация: 2
По умолчанию

Цитата:
Сообщение от .skyer Посмотреть сообщение
расписано то расписано, но это не работает
Пытался сделать как в примере, но добился только автоматической авторизации без подтверждения. Есть ли рабочий код?
LOSTeam вне форума  
Старый 22.12.2009, 19:49   #907
Участник
 
Регистрация: 22.12.2009
Сообщений: 5

Репутация: 1
По умолчанию

Почему то не логиниться через цикл , для проверки решил написать такой цикл

1 Залогинься
2 Если залогинился ShowMessage("Ура")
3 LogOFF

Так вот не разу не написал пробовал с 6 UIN все равно , а если без цикла сделать то все ок !


А вот заметил что если после Icq1.Login поставить ShowMessage то тогда все оке но ShowMessage мешает как избавиться ? ((

Еще заметил что если ShowMessage сразу закрыть то ни че не бует а если подождать сек 3 то все нормально, как же без него обойтись а то пока я на не щелкну на ОК дальше не пойдет (а если его ваще не втсавлять то просто будет не логиться что делать ???Помогите плиз(

Последний раз редактировалось Turbomax; 22.12.2009 в 21:47.
Turbomax вне форума  
Старый 23.12.2009, 01:55   #908
Супер Модератор
 
Аватар для DjFly
 
Регистрация: 07.07.2007
Сообщений: 845

По умолчанию

Цитата:
1 Залогинься
2 Если залогинился ShowMessage("Ура")
3 LogOFF
Выкладываю пример/альтернативу
Посмотри мою реализацию =)
Вложения
Тип файла: rar ....rar (195.5 Кб, 360 просмотров)

Последний раз редактировалось DjFly; 23.12.2009 в 02:01.
DjFly вне форума  
Старый 23.12.2009, 07:50   #909
Участник
 
Регистрация: 22.12.2009
Сообщений: 5

Репутация: 1
По умолчанию

А версия(ICQ) клиента какова ?


Чет все равно разницы не вижу если ставить это в цикл то все равно пропускать начинает )))

Последний раз редактировалось Turbomax; 23.12.2009 в 08:27.
Turbomax вне форума  
Старый 23.12.2009, 13:06   #910
Супер Модератор
 
Аватар для DjFly
 
Регистрация: 07.07.2007
Сообщений: 845

По умолчанию

Цитата:
Сообщение от Turbomax Посмотреть сообщение
А версия(ICQ) клиента какова ?
таська
Цитата:
Сообщение от Turbomax Посмотреть сообщение
Чет все равно разницы не вижу если ставить это в цикл то все равно пропускать начинает )))
ну видишь как я сделал? у тебя по твоему циклу не успевает залогиниться, как уже нужно отключиться.
Таймер ИМХО вариант =)
DjFly вне форума  
Старый 24.12.2009, 16:59   #911
Участник
 
Регистрация: 22.12.2009
Сообщений: 5

Репутация: 1
По умолчанию

Цитата:
Сообщение от DjFly Посмотреть сообщение
таська

ну видишь как я сделал? у тебя по твоему циклу не успевает залогиниться, как уже нужно отключиться.
Таймер ИМХО вариант =)
Сделал не много по другому щас все ок и без таймера_)
Терь другой вопрос а как на другом компе эт запустить терь все а то пробовал на ноуте молчит и все
Turbomax вне форума  
Старый 12.01.2010, 12:03   #912
Участник
 
Регистрация: 19.05.2007
Сообщений: 19

ICQ: 4571165

Репутация: 3
По умолчанию

народ, помогите с TICQClient`oм...
в общем прикрепляю процедуру:
Код:
 client.OnContactListRecv:=ContactListRecv;
Получаю КЛ:
Код:
    client.RequestContactList;
     While (not good) do //пока не получен кл -
       begin                //-гоняем цикл.
        Sleep(1000);
        end;
такое ощущение, что компонент и непытается получить КЛ, даже в течение 2 минут не срабатывает то, к чему мы привязывали сначала этот тайсику:
Код:
procedure TEditThread.ContactListRecv(Sender: TObject; UIN: String;
  ContactList: TStringList);
begin
    form1.Memo1.Lines.Add('КЛ получен!!!!');
    good:=true;
end;
то есть переменная good никогда не становится true ((( в чем может быть ошибка?((

Добавлено через 33 минуты
вспомнил, что надо использовать OnServerListRecv вместо ContactListRecv для получения списка, но всеравно не робит(((
__________________

Последний раз редактировалось 222; 12.01.2010 в 12:37. Причина: Добавлено сообщение
222 вне форума  
Старый 12.01.2010, 17:36   #913
Супер Модератор
 
Аватар для DjFly
 
Регистрация: 07.07.2007
Сообщений: 845

По умолчанию

222, робит
PHP код:
procedure TfrmMain.ICQClientServerListRecv(SenderTObject;
  
SrvContactListTList);
var
  
LongInt;
  
UserInfoTUINEntry;
  
UINNickItem PUINNickItem;
begin
  
//Список контактов может прийти по частям!
  //Версия 1.26 это не учитывала!
  //Очищаем списки только тогда, когда сделали новый запрос списка контактов
  
if FullReloadContactList then
    begin
      FullReloadContactList 
:= False;
      
lstContactList.Clear;
      
UINNickList.Clear;
    
end;
  if 
SrvContactList.Count 0 then
    
for := 0 to SrvContactList.Count do
      
begin
        UserInfo 
:= PUINEntry(SrvContactList.Items[i])^;
        if 
UserInfo.CType 0 then  //если это пользователь (CType = 0), то добавляем в список
          
begin
            lstContactList
.AddItem(UserInfo.Nick ' (' IntToStr(UserInfo.UIN) + ') - ' GetStatusFor(UserInfo.UIN), Self);
            
GetMem(UINNickItemSizeOf(UINNickItem^));
            
UINNickItem^.UIN := UserInfo.UIN;
            
UINNickItem^.Nick := UserInfo.Nick;
            
UINNickList.Add(UINNickItem);
          
end;
      
end;
  
AddEvent('Получен список контактов');
  
ICQClient.DestroyUINList(SrvContactList);
end
Узнать подробней
DjFly вне форума  
Старый 12.01.2010, 19:42   #914
Участник
 
Регистрация: 19.05.2007
Сообщений: 19

ICQ: 4571165

Репутация: 3
По умолчанию

нет, ты не понял! цикл перекрывает весь поток и не дает выполнится этому событию :(
__________________
222 вне форума  
Старый 12.01.2010, 20:04   #915
Супер Модератор
 
Аватар для DjFly
 
Регистрация: 07.07.2007
Сообщений: 845

По умолчанию

222, ты что вообще хотел сделать в процедуре?
Загрузить список?
DjFly вне форума  
Старый 12.01.2010, 20:06   #916
Почти участник
 
Регистрация: 02.02.2008
Сообщений: 1,843

Репутация: 5599
По умолчанию

Цитата:
Сообщение от 222 Посмотреть сообщение
такое ощущение, что компонент и непытается получить КЛ, даже в течение 2 минут не срабатывает то, к чему мы привязывали сначала этот тайсику:
Так ясный пень, поток-то твой висит в бесконечном цикле и не дает выполниться событию
Зачем тебе там этот цикл? Чем простое событие не устраивает? =)

Снифани прогу ICQMenace'ом, посмотри, приходит ли пакет с КЛ вообще. И учти, что если КЛ большой, то он придет частями.
RankoR вне форума  
Плюсанул RankoR :
Старый 12.01.2010, 20:12   #917
Участник
 
Регистрация: 19.05.2007
Сообщений: 19

ICQ: 4571165

Репутация: 3
По умолчанию

ранк!! хоть ты меня понял!! :yahoo:
Цитата:
поток-то твой висит в бесконечном цикле и не дает выполниться событию
вот как это исправить чтобы были цикл и событие??)) все вместе... чтобы прям в цикле можно было отследить, выполнилось ли событие!! подскажи плиз))
__________________
222 вне форума  
Старый 12.01.2010, 20:54   #918
Почти участник
 
Регистрация: 02.02.2008
Сообщений: 1,843

Репутация: 5599
По умолчанию

222, попробуй слип поменьше сделать, но скорее всего не поможет
RankoR вне форума  
Плюсанул RankoR :
Старый 12.01.2010, 21:17   #919
Участник
 
Аватар для Grutal
 
Регистрация: 29.04.2007
Сообщений: 350

Репутация: 1252
По умолчанию

Никто не заметил, что он юзает ContactListRecv а нужно ServerListRecv?
Тоже с этой проблемой столкнулся когда-то и даже не подозревал, что я делаю что-то не так ;)
Ну в примере в 913 посте через ServerListRecv и показано, пользуйтесь :)
Grutal вне форума  
Старый 13.01.2010, 10:04   #920
Участник
 
Регистрация: 19.05.2007
Сообщений: 19

ICQ: 4571165

Репутация: 3
По умолчанию

Grutal, я уже с этим ServerListRecv разобрался!!! нужно тока как-то в одной процедуре теперь сделать принятие контакт листа не выходя из самой процедуры!!
__________________
222 вне форума  
Старый 15.01.2010, 17:00   #921
Участник
 
Регистрация: 19.05.2007
Сообщений: 19

ICQ: 4571165

Репутация: 3
По умолчанию

яху!!! разобрался, в общем TTimer`Ы рулят)) теперь другая как бэ проблемка: реально ли узнать в скольких частях придёт КЛ ??(компонент от царя) если да, то как??
__________________
222 вне форума  
Старый 15.01.2010, 17:28   #922
Участник
 
Регистрация: 27.09.2006
Сообщений: 1,045

ICQ: 272768

Репутация: 2856
Отправить сообщение для .fry с помощью Skype™ Bimoid
По умолчанию

222, нет.
Но можно узнать последний это пакет или нет.
Смотри SNAC__HEADER_FLAGS — MORE_REPLIES_FOLLOW.
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR.
.fry вне форума  
Плюсанули .fry — 2 :
Старый 21.01.2010, 17:31   #923
Участник
 
Регистрация: 21.01.2010
Сообщений: 2

Репутация: 1
По умолчанию RequestInfo, SearchByUin

Заранее сорь, если офф или rtfm

Пишу на делфи, компонент 1,35 от Царя.

1-SearchByUin после нескольких успешных выполнений (вызываю таймером, интервал таймера рандомный от 2 до 5 секунд) вызывает ошибку сервера (снифил Menace)

2-OnUserFound - все переменные, кроме UIN, пустые всегда

3-после нескольких вызовов RequestInfo сервер перестает отдавать данные.

В чем проблема?
(варианты: 1-неправильная кривизна моих рук
2-кривизна компонента
3-особенности протокола)
MasterWizard вне форума  
Старый 21.01.2010, 18:06   #924
Почти участник
 
Регистрация: 02.02.2008
Сообщений: 1,843

Репутация: 5599
По умолчанию

MasterWizard, ограничения от AOL.
RankoR вне форума  
Плюсанул RankoR :
Старый 21.01.2010, 23:28   #925
Участник
 
Регистрация: 21.01.2010
Сообщений: 2

Репутация: 1
По умолчанию

Цитата:
Сообщение от RankoR Посмотреть сообщение
MasterWizard, ограничения от AOL.
При всем уважении - почему тогда тот же qip преспокойно позволяет прочитать инфу у дох..... пользователей?
MasterWizard вне форума  
 

Метки
delphi, ticqclient


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 06:27.


Перевод: zCarot
Форум Асечников © Asechka.RU

Новости Сочи