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 :
Старый 28.11.2007, 22:23   #76
Участник
 
Регистрация: 28.11.2007
Сообщений: 5

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

Компонент очень даже полезный.
Только меня мучает один вопрос, кто-нибудь реализовал Reconnect при пропадании связи как например в QIP?
nDaDe вне форума  
Старый 29.11.2007, 18:10   #77
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

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

А собственно какие именно затруднения у тебя возникли с этим?
yxu вне форума  
Плюсанул yxu :
Старый 29.11.2007, 18:22   #78
Участник
 
Регистрация: 27.09.2006
Сообщений: 1,045

ICQ: 272768

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

.....
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR.

Последний раз редактировалось .fry; 04.11.2008 в 23:29.
.fry вне форума  
Плюсанул .fry :
Старый 30.11.2007, 00:14   #79
Участник
 
Аватар для SnakeV1.0
 
Регистрация: 24.08.2007
Сообщений: 32

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

Народ, у меня уже как два дня один косячок. Вообщем раньше все было нормально.. а теперь после загрузки Списка контактов с сервака не определяется их статус.... Сервак присылает SNAC(09,01) и SNAC(03,01)

0x09 Not supported by client


0x03 Client rate limit exceeded


У кого нить есть такой косяк ???

Последний раз редактировалось SnakeV1.0; 30.11.2007 в 00:20.
SnakeV1.0 вне форума  
Старый 30.11.2007, 02:38   #80
Участник
 
Регистрация: 27.09.2006
Сообщений: 1,045

ICQ: 272768

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

.....
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR.

Последний раз редактировалось .fry; 04.11.2008 в 23:27.
.fry вне форума  
Плюсанул .fry :
Старый 30.11.2007, 06:38   #81
Участник
 
Регистрация: 06.08.2006
Сообщений: 243

ICQ: 272727765

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

.fry, надо подключаться на альтернативные сервера и на порт 443.
403 и прочее - это значит прокся тебя сама не пускает или она вообще не прокся. И вообще там прокси очень капризные, редко когда работают.
__________________
Мой блог - Mac, Qt и немного Delphi.
Sax-mmS вне форума  
Плюсанул Sax-mmS :
Старый 30.11.2007, 12:38   #82
Участник
 
Регистрация: 28.11.2007
Сообщений: 5

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

Цитата:
Сообщение от yxu Посмотреть сообщение
А собственно какие именно затруднения у тебя возникли с этим?
Цитата:
Сообщение от .fry Посмотреть сообщение
nDaDe, реальзовывал.. если происходит OnDisconnect, жду 5 секунд делаю коннект
Да я вроде не профан, но че-то не могу врубиться. Сделал цикл в цикле. Если так на словах, то будет следующее. Первый цикл: Вложен второй цикл от 1 до 3 и пауза 10 мин. Второй цикл: Пауза 1 мин, проверка соединения, Connect Пауза 1 мин. Дак вот проблема в том, что когда во втором цыкле сробатывает Connect, то прога лезет в инет (видно по фаеру), но в аську не выходит, пока не закончится первый цикл. Не понимаю в чем проблема, но порывшись в исходниках, может быть это как-то связано с Tthread использованном в ICQClient?
nDaDe вне форума  
Старый 30.11.2007, 15:16   #83
Участник
 
Регистрация: 06.08.2006
Сообщений: 243

ICQ: 272727765

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

Какие циклы?
На событие OnConnectionFalied запускаешь TTimer с некоторым интервалом. По событие таймера - новый Connect.
__________________
Мой блог - Mac, Qt и немного Delphi.
Sax-mmS вне форума  
Плюсанул Sax-mmS :
Старый 02.12.2007, 00:23   #84
Участник
 
Аватар для SnakeV1.0
 
Регистрация: 24.08.2007
Сообщений: 32

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

Народ, так что, никто не знает че за изменения на серваке.... и почему компонент больше не сообщает о смене статуса пользователей из списка

он вместо этого присылает два снака
Snac(09,01)
Snac(03,01)
---------------
Изменения в протоколе:
Теперь,если вы неавторизованы в контакт листе у человека,вы не увидите его статус(он для вас будет всегда оффлайн).
Все данные изменения сделаны на серверах.Чтобы избежать всех этих неприятностей добавляйте в список контактов собеседника и просите авторизации друг у друга,чтобы избежать блокирований сообщений и связанных с этим неудобств.

Также теперь есть уровни доступа к информации и пользователь может запретить показ всей информации для любых пользователей и разрешить отображение только для своих друзей.
У каждого пользователя, если ему разрешили доступ к информации есть специальный ключ (это все реализовано на внутреннем уровне, никаких ключей как таковых вы не увидите) и при запросе данных вы получаете информацию по уровню ключа.

Сжатый смысл, касательно проблемы: устанавливается Icq6 — Меню настройки — Установка уровня доступа как минимального (доступно всем); и вся информация будет показываться любому пользователю.

Ну и теперь определяется у кого вы на самом деле есть в контакт листе — если вы у пользователя в листе, то у вас имеется ключ для этого пользователя, — вы его друг. Добро пожаловать в "социальную сеть".

Последний раз редактировалось SnakeV1.0; 02.12.2007 в 00:36.
SnakeV1.0 вне форума  
Старый 02.12.2007, 01:03   #85
Участник
 
Регистрация: 06.08.2006
Сообщений: 243

ICQ: 272727765

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

Ты сам ответил на свой вопрос. Если контакт не в срверном КЛ и не авторизован - сервер не оповещает.
__________________
Мой блог - Mac, Qt и немного Delphi.
Sax-mmS вне форума  
Старый 06.12.2007, 01:20   #86
Участник
 
Регистрация: 06.12.2007
Сообщений: 3

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

Цитата:
Сообщение от SnakeV1.0 Посмотреть сообщение
он вместо этого присылает два снака
Snac(09,01)
Snac(03,01)
Вот вот! У меня та же фигня! И означают эти снаки, что формат снаков неверный (обычно после попытки добавить в визибл/инвизибл лист и локальный контакт лист соответственно). Раньше чтоб получать уведомление о смене статуса, надо было добавлять в локальный КЛ; сейчас локальный КЛ отменили, и как теперь получать уведомления? От авторизованных контактов в серверном КЛ, уведомления автоматически не приходят.
AlexVinS вне форума  
Старый 09.12.2007, 11:37   #87
Участник
 
Аватар для DOKER
 
Регистрация: 09.12.2007
Сообщений: 6

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

Народ, а есть ли у кого-нибудь какие либо наработки по поводу поддержки x-статусов?
DOKER вне форума  
Старый 09.12.2007, 14:39   #88
Участник
 
Регистрация: 09.12.2007
Сообщений: 3

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

Цитата:
Сообщение от DOKER Посмотреть сообщение
Народ, а есть ли у кого-нибудь какие либо наработки по поводу поддержки x-статусов?
Да тут даже обычные статусы перестали работать... что уж про x-статус говорить.
__________________
sources.org.ua
be3_max вне форума  
Старый 10.12.2007, 01:52   #89
Участник
 
Аватар для SnakeV1.0
 
Регистрация: 24.08.2007
Сообщений: 32

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

Цитата:
Сообщение от AlexVinS Посмотреть сообщение
Вот вот! У меня та же фигня! И означают эти снаки, что формат снаков неверный
Вроде поменялась структура снака 03,04
SnakeV1.0 вне форума  
Старый 10.12.2007, 08:34   #90
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

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


SNAC(03,04) CLI_BUDDYLIST_ADD
Use this this to add new buddies to your client-side contact list.
Вы можете забыть про существование этого снака вообще. Внимательно читайте новости, теперь НЕ шлется снак 03,0b(входа юзера или смены статуса), если его нету в СЕРВЕРНОМ контакт листе и не авторизован. Снак 03,04 добавляет уины в ЛОКАЛЬНЫЙ контакт лист, что теперь попросту бессмыслено. Как было написано выше, переходим на серверный кл и юзаем команды с SSL_..
P.S. У меня есть наработки по х-статусам, спрашивай чего конкретно интересует. А список их можешь найти тут - http://yxu.org.ru/index.php?do=comme...=1&cat=icq_inf
yxu вне форума  
Плюсанул yxu :
Старый 10.12.2007, 17:22   #91
Участник
 
Аватар для DOKER
 
Регистрация: 09.12.2007
Сообщений: 6

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

Цитата:
Сообщение от yxu Посмотреть сообщение
P.S. У меня есть наработки по х-статусам, спрашивай чего конкретно интересует. А список их можешь найти тут - http://yxu.org.ru/index.php?do=comme...=1&cat=icq_inf
Конкретно интересует применение тех данных, которые указаны по ссылке, в компоненте TICQClient, ну или хотябы небольшое объяснение чтоли по ним, а лучше примерчик небольшой, заранее благодарен!
DOKER вне форума  
Старый 10.12.2007, 22:48   #92
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

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

Самое первое, учимся ставить вопросы точнее и корректнее, а то блин я должен мысли читать и угадывать куда же ты все таки хочешь запихать х-статусы. Например, если хочешь сменить(поставить) х-статус используй снак 02,04. Открываем ICQWorks.pas, ищем procedure CreateCLI_SETUSERINFO и там пихаешь в tlv 5 любой полюбившийся тебе х-статус. Впрочем также можно туда пихать и капабилды и подменой оных изменять характеристики клиента, подробнеепро версии я уже писал где в этой теме, юзай поиск.
yxu вне форума  
Плюсанул yxu :
Старый 10.12.2007, 23:15   #93
Участник
 
Регистрация: 10.12.2007
Сообщений: 2

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

Так как насчет обычных статусов все-таки? Есть несколько пользователей, все они в серверном контакт-листе и есть обоюдная авторизация. Никакие уведомлений о смене статуса не приходят, т.е. при смене статуса пользователя вообще никакой Snac не присылается. Миранда, как ни странно, показывает статус правильно. Может после коннекта и авторизации еще что-то нужно сделать?
MaximV вне форума  
Старый 10.12.2007, 23:23   #94
Участник
 
Аватар для DOKER
 
Регистрация: 09.12.2007
Сообщений: 6

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

yxu, может я задам глупый вопрос, простите заранее, не совсем я это допонимаю, но не могли бы вы привести участок кода этой процедуры с любым установленным x-статусом, а также непонятно каким образом при смене x-статуса обновлять в tlv 5 нужный статус?
DOKER вне форума  
Старый 11.12.2007, 09:04   #95
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

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

Не знаю, не проверял на работоспособность, но примерно так или если хочешь суй в стандартную процедуру(CreateCLI_SETUSERINF O) как я писал выше или создай свою какую нибудь:
Код:
procedure CreateCLI_SETXSTATUS(Pkt: PRawPkt; XStatus: string; var Seq: Word);
begin
  PktInit(Pkt, 2, Seq);                         //Channel 2
  PktSnac(Pkt, $02, $04, 0, 0);                 //Snac: Type x02/x04, ID x0000, Flags 0
  PktTLV(Pkt, 5, Length(XStatus), XStatus);          //XStatus
  PktFinal(Pkt);                                //Finalize packet
end;
Добавь в ICQClient.pas допустим:
Код:
procedure TICQClient.SetXStatus(xstat: string);
var
 pkt: TRawPkt;
begin
 if not LoggedIn then exit;
 CreateCLI_SETXSTATUS(@pkt, xstat, Fseq);
 FSock.SendData(pkt, pkt.Len);
end;
Ну и юзай SetXStatus(#$8C#$50#$DB#$AE#$8 1#$ED#$47#$86#$AC#$CA#$16#$CC# $32#$13#$C7#$B7)
Для удобства можешь х-статусы в массив запихать, тип создать и т.д.
P.S. Может где-нибудь и накосячил, т.к. пишу с коленки, дальше домысливаем сами, курим мануалы ;)
yxu вне форума  
Плюсанул yxu :
Старый 11.12.2007, 09:13   #96
Участник
 
Аватар для DOKER
 
Регистрация: 09.12.2007
Сообщений: 6

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

Цитата:
Сообщение от yxu Посмотреть сообщение
Ну и юзай SetXStatus(#$8C#$50#$DB#$AE#$8 1#$ED#$47#$86#$AC#$CA#$16#$CC# $32#$13#$C7#$B7)
Для удобства можешь х-статусы в массив запихать, тип создать и т.д.
P.S. Может где-нибудь и накосячил, т.к. пишу с коленки, дальше домысливаем сами, курим мануалы ;)
Вот спасибо! Обязательно протестирую! А еще вопрос: можно ли задавать подпись к x-статусу? а так же узнать x-статус и подпись к нему от конкретного контакта?
DOKER вне форума  
Старый 11.12.2007, 10:08   #97
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

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

MaximV, попробуй в ICQWorks.pas заменить procedure CreateCLI_SETUSERINFO(Pkt: PRawPkt; var Seq: Word); данной:
Код:
procedure CreateCLI_SETUSERINFO(Pkt: PRawPkt; var Seq: Word);
const
  caps: array[0..$60 - 1] of Byte = (
   $09, $46, $13, $44, $4C, $7F, $11, $D1, $82, $22, $44, $45, $53, $54, $00, $00,
   $09, $46, $13, $4E, $4C, $7F, $11, $D1, $82, $22, $44, $45, $53, $54, $00, $00,
   $09, $46, $13, $49, $4C, $7F, $11, $D1, $82, $22, $44, $45, $53, $54, $00, $00,
   $B2, $EC, $8F, $16, $7C, $6F, $45, $1B, $BD, $79, $DC, $58, $49, $78, $88, $B9,
   $09, $46, $00, $00, $4C, $7F, $11, $D1, $82, $22, $44, $45, $53, $54, $00, $00,
   $56, $3F, $C8, $09, $0B, $6F, $41, $BD, $9F, $79, $42, $26, $09, $DF, $A2, $F3,
   $09, $46, $13, $4C, $4C, $7F, $11, $D1, $82, $22, $44, $45, $53, $54, $00, $00
  );
begin
  PktInit(Pkt, 2, Seq);                         //Channel 2
  PktSnac(Pkt, $02, $04, 0, 0);                 //Snac: Type x02/x04, ID x0000, Flags 0
  PktTLV(Pkt, 5, Length(caps), @caps);          //Client's capabilities
  PktFinal(Pkt);                                //Finalize packet
end;
Законекаться и посматреть, если ничего не изменится, то попробуй поснифать и посматреть чего шлется в снаке 03,0b.
yxu вне форума  
Плюсанул yxu :
Старый 11.12.2007, 23:20   #98
Участник
 
Регистрация: 09.12.2007
Сообщений: 3

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

yxu, что то ругается на процедуру в предыдущем сообщении...

[Error] ICQWorks.pas(1527): Number of elements differs from declaration
__________________
sources.org.ua
be3_max вне форума  
Старый 12.12.2007, 08:22   #99
Участник
 
Аватар для yxu
 
Регистрация: 17.11.2006
Сообщений: 153

ICQ: 8070080

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

Ну и в чем проблема, сложно подправить ошибку? Может я ее специально допустил, чтоб тупо не копи-пастили ;) Или ты програмируешь без базовых знаний анг языка? Юзай словарик тогда. Если это действительно так, то может стоит начинать с "Hello world", а не с icq компанент.
P.S. Дословный перевод: Количество элементов различается с тем что представлено
yxu вне форума  
Плюсанул yxu :
Старый 12.12.2007, 12:02   #100
Участник
 
Регистрация: 09.12.2007
Сообщений: 3

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

yxu, да понял сразу (ну почти)) про ету ошибку просто после моего исправления - caps: array[0..111] of Byte = ($09, $46, $13, ... ,статусов как не было так и нет (. Вот ето и привело к мысли что может гдето ты еще сделал ошибку специальн - "чтоб просто не копи/пастили".
__________________
sources.org.ua
be3_max вне форума  
 

Метки
delphi, ticqclient

Опции темы
Оценка этой теме
Оценка этой теме:

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

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

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


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


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

Новости Сочи