Вверх ↑
Этот топик читают: Гость
Ответов: 3514
Рейтинг: 184
#16: 2010-04-20 21:56:01 ЛС | профиль | цитата
В чем ошибка?
code_17864.txt
карма: 0
0
файлы: 1code_17864.txt [543B] [517]
Ответов: 294
Рейтинг: 64
#17: 2010-04-21 00:37:27 ЛС | профиль | цитата
Астрамак писал(а):
В чем ошибка?
code_17864.txt


Лишний параметр "s_status" (вместо него идет само значение статуса - 0, 1 и т. д.)
Add(MT_AddData,10868068,371,163)
{
InputMT=3
link(Data1,8618565:Caption,[(377,150)(349,150)])
link(Data2,9345136:Text,[(384,150)(405,150)])
}
Add(Label,8618565,343,105)
{
Left=35
Top=95
Width=80
Font=[MS Sans Serif,9,1,0,1]
Caption="SetStatus"
}
Add(Edit,9345136,399,105)
{
Left=125
Top=95
Width=85
Text="0"
}
Add(Button,3187737,301,163)
{
Left=225
Top=95
Width=115
Caption="online"
link(onClick,10868068:doAdd,[])
}




карма: 0

0
Ответов: 839
Рейтинг: 17
#18: 2010-04-21 18:01:50 ЛС | профиль | цитата
ещё бы контакт лист)
------------ Дoбавленo в 18.01:
выложете если кто что сделает интересное))
карма: 0

0
Ответов: 1841
Рейтинг: 369
#19: 2010-04-23 23:19:44 ЛС | профиль | цитата
хм, я вот тоже откопал что-то подобное (ещё не тестил)
http://sourceforge.net/projects/icqocx32/
карма: 1
0
Ответов: 3514
Рейтинг: 184
#20: 2010-05-02 12:04:23 ЛС | профиль | цитата
судя по топикам в багтрекере уже мертвая, из-за изменений протокола. а автор куда то потерялся.
карма: 0
0
Ответов: 1841
Рейтинг: 369
#21: 2010-05-07 12:18:02 ЛС | профиль | цитата
может кто сталкивался с тем что после длительного бездействия ICQ падает а также бывают случаи что коннект есть но движок не реагирует не на отправку не на принятие каких либо данных и кто как с этим борется?
PS. Я например каждые 1-2 минуты запрашиваю статус своего же UINа но коннект с сервером в некоторых случаях всё равно рвётся...
PSS. Со второй проблемой так и не разобрался (подозреваю ошибки в движке ICQ ActiveX)...
карма: 1
0
Ответов: 3514
Рейтинг: 184
#22: 2010-05-07 13:44:04 ЛС | профиль | цитата
есть такое. у меня стоит прога втоаря на этом же серве котора яотправляет боту ping, если тот не отвечает - перезапускает процесс
карма: 0
0
Гость
Ответов: 17029
Рейтинг: 0
#23: 2010-05-11 13:58:15 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 13:16:23
карма: 0

0
Ответов: 1841
Рейтинг: 369
#24: 2010-05-13 00:39:29 ЛС | профиль | цитата
вот ещё напоролся на компонент ICQ с очень большим набором функций + бесплатный но он к сожалению (как я понял) для Delphi 2009 и Delphi 7
http://progs.volkov.spb.su/ticqclient/
карма: 1
0
Ответов: 3514
Рейтинг: 184
#25: 2010-05-13 09:18:47 ЛС | профиль | цитата
что-то я не заметил очень большого набора функций
карма: 0
0
Ответов: 1841
Рейтинг: 369
#26: 2010-05-13 16:33:03 ЛС | профиль | цитата
TICQClientHelp.rar
Скрин
карма: 1
0
Гость
Ответов: 17029
Рейтинг: 0
#27: 2010-05-13 17:36:29 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 13:16:23
карма: 0

0
Ответов: 1841
Рейтинг: 369
#28: 2010-05-13 18:26:34 ЛС | профиль | цитата
Астрамак писал(а):
что-то я не заметил очень большого набора функций

Описание TICQClient

Properties(Свойства)


Позволяет получить/установить online статус клиента, после логина на сервер.
Статус можен быть одним из:
S_ONLINE
S_INVISIBLE
S_AWAY
S_NA
S_OCCUPIED
S_DND
S_FFC

property LoggedIn: Boolean
Если вы залогинились на сервер, тогда свойство вернет TRUE.

property UIN: LongWord
Свойство позволяет получить/установить UIN пользователя. Используется при логине.

property Pasword: String
Свойство позволяет получить/установить пароль пользователя.

property ICQServer: String
ICQ сервер, следует использовать: 'login.icq.com'

property ICQPort: Word
ICQ port, следует использовать: '5190'

property ConvertToPlaintext: Boolean
Если это свойство установить в TRUE, тогда сообщения, приходящие в RTF(Rich Text Format) формате, автоматически будут сконвертированы в простой текст(plain text).
Пример RTF сообщения:
{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset204{\*\fname Times New Roman;}Times New Roman CYR;}}
{\colortbl ;\red0\green64\blue0;}
\viewkind4\uc1\pard\cf1\f0\fs20\'ef\'f0\'e8\'e2\'e5\'f2\par
}
Эквивалент в простом тексте:
привет

property ContactList: TStrings
Контакт лист пользователя, *посылается только при логине*. Каждая строчка -- UIN номер. Если вы хотите добавить кого-либо в контакт лист после логина, используйте AddContact procedure.

property VisibleList: TStrings
Visible лист пользователя. Каждая строка -- UIN номер. Посылается, когда вы переходите в invisible статус. Добавлять пользователя можно в любое время.

property InvisibleList: TStrings
Invisible лист пользователя. Каждая строка -- UIN номер. Посылается, когда вы переходите в статус отличный от invisible. Добавлять пользователя можно в любое время.

property AutoAwayMessage: String
Авто-ответ пользователя. В обычной ICQ это ответ на 'Read Away-message'.


Functions(Функции)


procedure Login(Status: LongWord = S_ONLINE)
Процедура устанавливает соединение с сервером, вы сразу переходите в статус Status, который по умолчанию S_ONLINE, можно залогиниться и с другим статусом, спосок статусов в property Status.

procedure Disconnect
Отсоединиться от сервера.

procedure SendMessage(UIN: LongWord; Msg: String)
Послать сообщение UIN'у.

procedure SendURL(UIN: LongWord; const URL, Description: String);
Послать URL(ссылку) UIN'у.

function AddContact(UIN: LongWord): Boolean
Добавить UIN'а в ваш контакт лист после логина. UIN автоматически добавляется в ContactList TStrings. После добавления UIN'а в ваш контакт лист, вы будете получать извещения об изменениях его статуса. Возвращает True, если пользователь с таким UIN'ом не был в вашем листе раньше.

RemoveContact(UIN: LongWord) procedure
Удаляет UIN из вашего контакт листа. Ипользуйте пока вы в онлайне.

RemoveContactVisible(UIN: LongWord) procedure
Удаляет UIN из вашего visible листа. Используйте пока вы в онлайне.

RemoveContactInvisible(UIN: LongWord) procedure
Удаляет UIN из invisible листа. Используйте пока вы в онлайне.

RequestInfo(UIN: LongWord)
Запросить информацию об UIN'е. В ответ вы получите следующие извещения: OnUserWorkInfo, OnUserInfoMore, OnUserInfoAbout, OnUserInfoInterests, OnUserInfoMoreEmails, OnUserFound.

procedure SearchByMail(Email: String)
procedure SearchByUIN(UIN: LongWord)
procedure SearchByName(FirstName, LastName, NickName, Email: String)
Поиск пользователя по Mail'у, UIN'у или другой инфе. В ответ вы получите OnUserFound извещение(event) если хотябы один человек был найден или OnUserNotFound если таких не существует.

procedure SearchRandom(Group: Word)
Поиск случайного пользователя по группе, где номер группы может быть одним из RandGroups: array[1..11]...(ICQWorks.pas) контанты. В ответ вы получите OnUserFound извещение, только один пользователь будет обязательно найден. (Это ограничение ICQ).

procedure SearchWhitePages(First, Last, Nick, Email: String; MinAge, MaxAge: Word; Gender: Byte; Language, City, State: String; Country, Company, Department, Position: String; Occupation, Past, PastDesc, Interests, InterDesc, Affiliation, AffiDesc, HomePage: String; Online: Boolean);
Поиск в 'White Pages'. В ответ вы получите OnUserFound извещение(event) если хотябы один человек был найден или OnUserNotFound если таких не существует.

procedure SetSelfInfoGeneral(NickName, FirstName, LastName, Email, City, State, Phone, Fax, Street, Cellular, Zip, Country: String; TimeZone: Byte; PublishEmail: Boolean);
Залить на сервер инфо о себе. Парамерты могут быть пустыми строками('').

procedure SetSelfInfoMore(Age: Word; Gender: Byte; HomePage: String; BirthYear: Word; BirthMonth, BirthDay: Byte; Language1, Language2, Language3: String);
Залить на сервер дополнительную инфу о себе.

procedure SetSelfInfoAbout(About: String);
Залить на сервер about инфу о себе.

procedure RequestContactList;
Запросить контакт лист с сервера. Для более подробной информации смотрите: OnServerListRecv event.

procedure DestroyUINList(var List: TList);
Освободить память, в которой временно хранится контакт лист принятый с сервера.

procedure SendSMS(const Destination, Text: String);
Посылает SMS к Destination с текстом Text.
Пример:

ICQClient1.SendSMS('+3739401111', 'Hello, World!');

procedure SendMessageAdvanced(UIN: LongWord; const Msg: String; ID: Word; RTFFormat: Boolean);
Посылает сообщение с дополнительными возможностями. После того как UIN получил ваше сообщение вы получите подтвреждение. ID - случайное значение, такое же приходит к вам в подтверждениях(см. OnAdvancedMsgAck event). Если ваше сообщение в RTF(Rich Text Format) формате, тогда RTFFormat должен быть True, бойтесь использовать RTF формат, потому как некоторые ICQ клоны его не поддерживают, в частности клоны под linux и win32, такие как: Miranda, YSM, mICQ, &RQ, StrICQ и другие.

function SendMessageDirect(UIN: LongWord; const Msg: String; RTFFormat: Boolean): Word; (DC)
Для большей информации смотрите SendMessageAdnaced procedure. Пока эта функция не поддерживает подтверждений, т.е. вы их получать не будете, хотя это возможно реализовать. Возвращает ID как результат - уникальный идентификатор если прямое соединение с UIN было установлено, иначе - 0. В ответ вы получите OnDirectPacketAck event с этим ID.

procedure RegisterNewUIN(const Password: String);
Зарегистрировать новый UIN, параметр Password -- это пароль с каким вы хотите использовать новый номер. Процедура должна использоваться когда вы в офлайне(тобишь она сама логиниться и делает что надо . Если вам выделили новый номер, тогда вы получите OnNewUINRegistered event, иначе OnNewUINRefused event(например, когда вы хотите слишком много номеров).

procedure RequestAwayMsg(UIN: LongWord; ID: Word; ReqStatus: Byte);
Запросить авто-ответ UIN'а. ID - случайное значение которое придет вам в ответах на RequestAwayMsg. ReqStatus - это тип авто-ответа, может быть одним из:
GET_AWAY, - запросить away авто-ответ
GET_OCCUPIED, - запросить occupied авто-ответ
GET_NA, - запросить NA авто-ответ
GET_DND, - запросить DND авто-ответ
GET_FFC - запросить FFC(Free For Chat) авто-ответ.
Другими словами ReqStatus -- это текущий статус UIN'а.
В ответ вы получитеOnAutoMsgResponse event.

UnregisterUIN(const Password: String);
Стереть с лица земли ваш UIN! Бойтесь использовать эту процедуру, т.к. можно навредить самому себе Password -- это ваш текущий пароль. Если пароль который вы передали будет кривой, то вы получите OnUnregisterBadPassword event, иначе OnUnregisterOk event(и будете автоматически отключены от сервера).

procedure ChangePassword(const NewPassword: String);
Меняет текущий пароль пользователя на NewPassword. Должно все это менятся пока вы в онлайне. property Password: String при этом не изменяется(вы должны это сделать самостоятельно). После успешной смены пароля вы получите OnChangePasswordOk event.

function DirectConnectionEstabilished(UIN: LongWord): Boolean; (DC)
Возвращает True если примое соединение с UIN было установлено.

function SendContacts(UIN: LongWord; Contacts: TStringList): Word; (DC)
Посылает контакты UIN'у. Каждая строка Contacts TStirngList имеет следующий формат:
UIN человека=его NickName, NickName может быть неуказан(пустым).
Возвращает ID как результат - уникальный идентификатор если прямое соединение с UIN было установлено, иначе - 0. В ответ вы получите OnDirectPacketAck event с этим ID.
Пример:


procedure TMainForm.Button2Click(Sender: TObject);
var
List: TStringList;
begin
List := TStringList.Create;
List.Add('52341243=Monica');
List.Add('12333391=Бритний Спеарзсс');
List.Add('8213876=');
List.Add('1234333=Bob');
List.Add('925464568=');
ICQClient1.SendContacts(4024781, List);
List.Free;
end;

function RequestContacts(UIN: LongWord; const Reason: String): Word; (DC) Посылает запрос контактов UIN'у.
Возвращает ID как результат - уникальный идентификатор если прямое соединение с UIN было установлено, иначе - 0. В ответ вы получите OnDirectPacketAck event с этим ID.
Пример:


procedure TMainForm.Button1Click(Sender: TObject);
begin
ICQClient1.RequestContacts(4024781, 'Кинь мне пару контактов плз ');
end;



Events(События)


OnAddedYou(Sender: TObject; UIN: String)
Вызывается, когда UIN добавляет вас в свой контакт лист.

OnAdvancedMsgAck(Sender: TObject; UIN: String; ID: Word; AcceptType: Byte; AcceptMsg: String)
Ответ на SendMessageAdvanced procedure.
Это подтверждение, что пользователь получил ваше сообщение. Если это извещение не получено, вы можете послать выше сообщение еще пару раз.
ID - случайное значение, которое было передано в SendMessageAdvanced procedure.
AcceptType может быть одним из:
ACC_NORMAL - нормально принято
ACC_NO_OCCUPIED - не принято, occupied статус
ACC_NO_DND - не принято, dnd статус
ACC_AWAY - принято но в away статусе
ACC_NA - принято, но в na статусе
ACC_CONTACTLST - принято в contact list (не мигать в трэе)
AcceptMsg - это авто-ответ, вроде: "User is currently N/A. You can leave him/her a message".

OnAutoMsgResponse(Sender: TObject; UIN: String; ID: Word; RespStatus: Byte; Msg: String);
Ответ на RequestAwayMsg procedure. ID & RespStatus такие же как вы передавали в RequestAwayMsg procedure, Msg -- это текст авто-ответа.

OnChangePasswordOk(Sender: TObject);
Ответ на ChangePassword procedure. Означает, что ваш пароль был успешно изменен.

OnConnectionFailed(Sender: TObject)
Вызывается, когда вы не можете подключиться к серверу либо сервер вас отключил по другим причинам.

OnContactListRecv(Sender: TObject; UIN: String; ContactList: TStringList); (DC)
Вызывается, когда UIN посылет вам свои контакты. Каждая строка в ContactList имеет следующий формат: UIN пользователя=его NickName. После использования ContactList TStringList вы *должны* его уничтожить (ContactList.Free).

OnContactListRequest(Sender: TObject; UIN, Reason: String); (DC)
Вызывается когда UIN запрашивает у вас контакты, не дайте ему умереть со скуки

OnDirectPacketAck(Sender: TObject; ID: Word); (DC)
Ответ на любой отосланый прямой пакет(SendMessageDirect, RequestContacts, и тд.), который был успешно получен и обработан ICQ'ей которой вы его посылали. ID = значение которое возвращают DC (Direct Connection) функции.

OnLogin(Sender: TObject)
Вызывается при успешном логине.

OnMessageRecv(Sender: TObject; Msg, UIN: String);
Вызывается при получении сообщения (через сервер или напрямую).


OnNewUINRefused(Sender: TObject);
Ответ на RegisterNewUIN procedure. Означает, что сервер не может выделить вам номер, может вы хотите их слишком много или делаете это слишком часто? ;)

OnNewUINRegistered(Sender: TObject; UIN: String);
Ответ на RegisterNewUIN procedure. Вам выделен новый UIN, можете смело использовать его при следующем логине.

OnOfflineMsgRecv(Sender: TObject; Msg, UIN: String);
Вызывается когда UIN послал сообщение, пока вы были в офлайне.

OnOfflineURLRecv(Sender: TObject; Description, URL, UIN: String);
Вызывается когда URL послал сообщение, пока вы были в офлайне.

OnPktDirectParse(Sender: TObject; Buffer: Pointer; BufLen: Cardinal; Incoming: Boolean); (DC)
Вызывается каждый раз, когда TICQClient посылает или получает какой-либо пакет посланый через прямое соединение. Используется обычно разработчиками. Пакеты могут быть шифроваными.

OnPktParse(Sender: TObject; Buffer: Pointer; BufLen: Cardinal; Incoming: Boolean);
Вызывается каждый раз, когда TICQClient посылает или получает какой-либо пакет. Используется обычно разработчиками.

OnServerListRecv(Sender: TObject; SrvContactList: TList);
Ответ на RequestContactList procedure.
В конце вы *обязательно* должны вызвать DestroyUINList procedure с параметром = SrvContactList, иначе у вашего приложения будут утечки памяти. Каждый элемент SrvContactList'а это указатель на следующую структуру:

TUINEntry = record
UIN: LongWord; //UIN в контакт листе
Nick: ShortString; //Nick, может быть пустым
CType: Word; //Type, может быть U_NORMAL(нормальный пользователь), U_VISIBLE_LIST(пользователь в visible листе)
//, U_INVISIBLE_LIST(пользователь в invisible листе), U_IGNORE_LIST(пользователь в ignore листе)
CTag: Word; //Зарезервировано для внутренного использования
CGroup: ShortString; //Группа в которой содержится пользователь (например General, Friends, etc).
end;

Пример использования:
procedure TMainForm.ICQClient1ServerListRecv(Sender: TObject;
SrvContactList: TList);
var
i: Word;
UserInfo: TUINEntry;
begin
if SrvContactList.Count > 0 then
for i := 0 to SrvContactList.Count - 1 do
begin
UserInfo := PUINEntry(SrvContactList.Items[i])^;
Memo1.Lines.Add(UserInfo.Nick + ' в группе ' + UserInfo.CGroup
+ ' и его UIN ' + IntToStr(UserInfo.UIN));
end;
ICQClient1.DestroyUINList(SrvContactList);
end;

OnStatusChange(Sender: TObject; UIN: String; Status: Cardinal);
Вызывается когда UIN из вашего контакт листа меняет стататус или идет в онлайн. Статусы можно найти в property Status. Так же можно использовать StatusToStr(Value: LongWord): String function из ICQWorks.pas, чтоб сконвертировать из числового представления статуса в строковое.

OnUnregisterBadPassword(Sender: TObject);
Ответ на UnregisterUIN procedure. Значит, что пароль переданый в UnregisterUIN был неверным.

OnUnregisterOk(Sender: TObject);
Ответ на UnregisterUIN procedure. Вызвается как только ваш UIN был стерт. После этого вы будете автоматически отключены от сервера.

OnURLRecv(Sender: TObject; Description, URL, UIN: String);
Вызывается когда вы получаете URL (через сервер или напрямую).

OnUserFound(Sender: TObject; UIN, Nick, FirstName, LastName, Email: String; Status: Word; Gender, Age: Byte; SearchComplete: Boolean);
Ответ на SearchByMail, SearchByUIN, SearchByName, SearchRandom, SearchWhitePages procedures. SearchComplete = TRUE, когда вы получаете последнего найденого пользователя(т.е. окончание списка найденых людей).

OnUserGeneralInfo(Sender: TObject; UIN, NickName, FirstName, LastName, Email, City, State, Phone, Fax, Street, Cellular, Zip, Country: String; TimeZone: Byte; PublishEmail: Boolean);
Ответ на RequestInfo procedure. Чтобы сконвертировать TimeZone в нормальное представление(типа +2:00), вы должны сделать слудущее:

var
S: String;
<....>
S := IntToStr(- ShortInt(TimeZone) div 2) + ':' + IntToStr(Abs(ShortInt(TimeZone) mod 2 * 30));

OnUserInfoAbout(Sender: TObject; UIN, About: String);
Ответ на RequestInfo procedure.

UserInfoBackground(Sender: TObject; UIN: String; Pasts, Affiliations: TStringList);
Ответ на RequestInfo procedure. Если у вас вызывается это событие, тогда вы *обязательно должны* разрушить Pasts и Affiliations StringLists, после их использования(Pasts.Free; Affiliations.Free);

OnInfoInterests(Sender: TObject; UIN: String; Interests: TStringList);
Ответ на RequestInfo procedure. Если у вас вызывается это событие, тогда вы *обязательно должны* разрушить Interests StringList, после его использования(Interests.Free).

OnUserInfoMore(Sender: TObject; UIN: String; Age: Word; Gender: Byte; HomePage: String; BirthYear, BirthMonth, BirthDay: Word; Lang1, Lang2, Lang3: String);
Ответ на RequestInfo procedure.

OnUserInfoMoreEmails(Sender: TObject; UIN: String; Emails: TStringList);
Ответ на RequestInfo procedure. Если у вас вызывается это событие, тогда вы *обязательно должны* разрушить Emails StringList, после его использования(Emails.Free).

OnUserNotFound(Sender: TObject);
Ответ на SearchByMail, SearchByUIN, SearchByName, SearchRandom, SearchWhitePages procedures. Вызывается, когда такой пользователь не найден.

OnUserOffline(Sender: TObject; UIN: String);
Вызывается когда UIN из вашего листа уходит в офлайн.

OnUserWorkInfo(Sender: TObject; UIN, WCity, WState, WPhone, WFax, FAddress, WZip, WCountry, WCompany, WDepartment, WPosition, WOccupation, WHomePage: String);
Ответ на RequestInfo procedure.
Неужели это можно назвать не очень большим набором функций?
карма: 1
0
Ответов: 3514
Рейтинг: 184
#29: 2010-05-14 09:46:14 ЛС | профиль | цитата
Неплохо.
Но я всё равно за жаббер

CriDos, может распакуешь мне библиотеку? там где то ocx лежит..
карма: 0
0
Ответов: 839
Рейтинг: 17
#30: 2010-05-14 10:35:15 ЛС | профиль | цитата
Или уже готовый компонент под Hiasm
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)