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. |
05.01.2008, 18:54 | #126 |
Участник
Регистрация: 28.11.2007
Сообщений: 5
Репутация: 1
|
Ну видимо у кого как.
В демке которая идет с компонентом, не сделана отсылка KeepAlive пакетов. Хотя может стоило бы, чтобы человек знал о такой возможности подробно не разбираясь с компонентом. А так с отсылкой KeepAlive пакетов все просто чудесно. Respect создателю и конечно тем, кто поддерживает это дело! Последний раз редактировалось nDaDe; 05.01.2008 в 22:14. |
11.01.2008, 14:43 | #127 |
Участник
|
ICQ\AIM Screen name Registration Date
Кому интересна Дата регистрации аккаунта:
в процедуре модуле ICQClient ищем строку функцию "TICQClient.HSnac030B" и в ней в после Код HTML:
$04: {idle time} //* eraser 14.05.04 begin Inc(Pkt^.Len, 2); //TLV's Length wIdleTime := GetInt(Pkt, 2); //Idle in minutes end; Код HTML:
$05: { registration date } begin Inc(Pkt^.Len, 2); RegDate := UnixToDateTime(GetInt(Pkt, 4)); // Timestamp {if Assigned(OnRegDate) then FOnRegDate(Self, UIN, DateTimeToStr(RegDate))} end; надо было как-то аапить тему :)
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR. Последний раз редактировалось .fry; 11.01.2008 в 14:52. |
Плюсанул .fry : |
11.01.2008, 22:56 | #128 |
Участник
Регистрация: 17.11.2006
Сообщений: 153
ICQ: 8070080 Репутация: 302
|
Да там много чо шлеться:
Код:
// TLV(1) Unknown (x50) // TLV(2) Member since (not sent) // TLV(3) Online since // TLV(4) Idle time (not sent) // TLV(5) Registered // TLV(6) New status // TLV(A) External IP // TLV(C) DC Info // TLV(D) Capabilities // TLV(F) Session timer (in seconds) // TLV(1D) Avatar Hash (20 bytes) // TLV(19) New capabilities |
Плюсанул yxu : |
12.01.2008, 16:06 | #130 |
Участник
Регистрация: 06.08.2006
Сообщений: 243
ICQ: 272727765 Репутация: 406
|
Не знаю, почему у вас не вызывается OnConnectionFailed. Тогда самый простой способ - повесить таймер и каждые n-секунд проверять состояние подключения.
__________________
Мой блог - Mac, Qt и немного Delphi. |
Плюсанул Sax-mmS : |
12.01.2008, 16:29 | #131 |
Участник
Регистрация: 12.01.2008
Сообщений: 3
Репутация: 1
|
|
12.01.2008, 17:27 | #132 |
Участник
|
bmkus, парой постов выще разбиралось это ;)
http://forum.asechka.ru/showpost.php...&postcount=125
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR. |
Плюсанул .fry : |
12.01.2008, 21:02 | #133 |
Участник
Регистрация: 12.01.2008
Сообщений: 3
Репутация: 1
|
|
12.01.2008, 21:05 | #134 |
Участник
|
открой её исходник в модуле ICQClient, и увидишь исходник
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR. |
Плюсанул .fry : |
16.01.2008, 10:52 | #135 |
Участник
Регистрация: 28.11.2007
Сообщений: 5
Репутация: 1
|
Поставь таймер с интервалом в 1 мин, в котором посылай KeepAlive пакеты.
Например: procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.enabled:=true; If ICQClient.LoggedIn then ICQClient.SendKeepAlive; end; |
17.01.2008, 14:24 | #136 |
Участник
Регистрация: 26.09.2006
Сообщений: 149
Репутация: 129
|
Если кому нужно знать при поиске уинов еще и ИД базы (рамблер, бигмир, атлас ...) вот кусочек:
procedure TICQClient.HSnac1503(Flap: TFlapHdr; Snac: TSnacHdr; Pkt: PRawPkt); ... FAge := GetInt(Pkt, 1); //The user's age. inc(Pkt.Len, 3); FBaseID := GetLNTS(Pkt); //The base ID. if Assigned(OnUserFound) then ... Не забудьте объявить переменную FBaseID и протащить по методам. В переменную FBaseID возвращается строка типа: ID, (н.п.'1,', '3,', '10,', '16,'). Ну дальше массивек ИД и Почтовик и все готово.
__________________
{$R snt.res} <<< |
Плюсанул sai_NT : |
17.01.2008, 15:50 | #137 |
Участник
Регистрация: 17.11.2006
Сообщений: 153
ICQ: 8070080 Репутация: 302
|
Да боянчик так то, в квипе давно ж это показывает уже. Там после Id еще мыло для логина шлется (могу сказать стопудово только про рамблер, но по идее и на остальных должно быть).
|
Плюсанул yxu : |
18.01.2008, 16:21 | #138 |
Участник
Регистрация: 26.09.2006
Сообщений: 149
Репутация: 129
|
К вопросу по Basic Distribution ID:
[ 1 - Israel - icq.nana.co.il ] [ 3 - Russia - icq.rambler.ru ] [ 9 - Bulgaria - icq.abv.bg ] [10 - Ukraina - icq.bigmir.net ] [14 - Turkey - icq.mynet.com ] [16 - Чехия - icq.atlas.cz ] [18 - Словакия - icq.zoznam.sk ]
__________________
{$R snt.res} <<< |
Плюсанул sai_NT : |
23.01.2008, 03:06 | #139 | |
Участник
Регистрация: 23.01.2008
Сообщений: 1
Репутация: 1
|
Цитата:
Нашел только http://hghltd.yandex.net/yandbtm?url...=3&sg=40&isu=1 Но это не помогает у меня и так последний вариант Что бы придумать, у кого было такое? |
|
24.01.2008, 13:45 | #140 |
Участник
Регистрация: 24.01.2008
Сообщений: 3
Репутация: 1
|
зависает программа с TICQClient
Написал программу. Все нормально коннектится через прокси. Отсылает, принимает сообщения все работает. Но где-то через полчаса зависает наглухо. Причем в списке приложений статус работающей программы. Подскажите пожалуйста какие основные причины зависания компонента TICQClient могут быть и как их обработать?
|
24.01.2008, 15:44 | #141 | |
Участник
Регистрация: 22.01.2008
Сообщений: 2
Репутация: 1
|
Цитата:
Поставь таймер минутный чтоб он отсылал... может помочь |
|
25.01.2008, 08:11 | #142 |
Участник
Регистрация: 24.01.2008
Сообщений: 3
Репутация: 1
|
|
28.01.2008, 14:53 | #143 |
Участник
Регистрация: 24.01.2008
Сообщений: 3
Репутация: 1
|
|
28.01.2008, 22:35 | #145 |
Участник
Регистрация: 17.11.2006
Сообщений: 153
ICQ: 8070080 Репутация: 302
|
uses ICQWorks;
Код:
procedure TForm1.ICQClient1StatusChange(Sender: TObject; UIN: String; Status: Cardinal); begin if Status = S_ONLINE then showmessage(uin + ' сменил статус на ' + StatusToStr(Status)); end; |
Плюсанул yxu : |
29.01.2008, 02:38 | #146 | |
Участник
Регистрация: 25.01.2008
Сообщений: 7
Репутация: 1
|
Цитата:
чой-то не работает, может чо не так делаю :( можно исходничек рабочик - а я его разберу :( (просто дельфи плоховато помню/знаю) |
|
29.01.2008, 09:03 | #147 |
Участник
Регистрация: 17.11.2006
Сообщений: 153
ICQ: 8070080 Репутация: 302
|
Попробуй для начала разобрать данную ветку форума с 1 странички, а не читать с конца. Вопрос про смену статусов поднимался минимум 2 раза (а может и 3), и написано и разжевано, ан нет, пока носом не тыкнешь не увидят.
З.Ы. К исходному компаненту прилагается норм хелп, там можно найти ответы по всем свойствам и процедурам. |
Плюсанул yxu : |
29.01.2008, 11:00 | #148 | |
Участник
Регистрация: 25.01.2008
Сообщений: 7
Репутация: 1
|
Цитата:
Сорри конечно, просто мне так легче - если я вижу реализацию и разбираю ее с учебником - два зайца убиваю - и программу понимаю и язык изучаю. А хелп (по крайней мере у меня) заключается в однострочном описании функции, без примеров и прочее... А по теме - нашел инфу, спасибо, поправил ICQClient, ICQWorks... только после SSLActivate, перестал грузится контакт лист :(, коммент поставлю грузится, но нет статусов :( может подскажешь в чем дело, спасибо огромное! Последний раз редактировалось nkarataev; 29.01.2008 в 17:55. |
|
30.01.2008, 13:56 | #149 |
Участник
Регистрация: 22.01.2008
Сообщений: 2
Репутация: 1
|
Народ... ну скажите мне пожалуйса... как разобраться с статусом Online... никак немогу добится того чтоб другие клиенты увидили моего в режиме Онлайна.. показывает что оффлайн в любых положениях... в чём косяк может быть????
|
03.02.2008, 17:28 | #150 | ||
Участник
Регистрация: 24.05.2007
Сообщений: 4
Репутация: 1
|
Цитата:
Цитата:
|
||