Спасибо за статью. Интересно получилось.
Хотя ModIcq прекрасно используется и без доработки, с доработанным вариантом работать проще :)
IcqMod.dll использовать напрямую в MT5 не получится, т.к. она работает с Ansi строками, а в MT5 строки в Unicode формате. Поэтому, проект пришлось переделать под работу с сообщениями в Unicode(для этого в протоколе используется не бинарный а HTML формат). Теперь, отправляйте и получайте сообщения на любом языке мира! Надеюсь, проект будет востребованным, что позволит его улучшать согласно Вашим пожеланиям.
IcqMod.dll использовать напрямую в MT5 не получится, т.к. она работает с Ansi строками, а в MT5 строки в Unicode формате.
Не совсем так. Есть возможность конвертнуть с помощью StringToCharArray. Например, у меня такой код работает
struct ICQ_CLIENT { uchar status; ushort sequence; ulong sock; }; #import "IcqMod.dll" ulong ICQConnect(ICQ_CLIENT& client, uchar& host[], ushort port, uchar& login[], uchar& pass[], int proxy); void ICQClose(ICQ_CLIENT& client); ulong ICQSendMsg(ICQ_CLIENT& client, uchar& uin[], uchar& message[]); ulong ICQReadMsg(ICQ_CLIENT& client, uchar& uin[], uchar& msg[], int& msglen); #import void OnStart() { // переводим строки в массив символов для передачи в dll uchar login[], password[], server[]; StringToCharArray("123456789", login); StringToCharArray("password", password); StringToCharArray("login.icq.com", server); // подключаемся ICQ_CLIENT client; ICQConnect(client, server, 5190, login, password, 0); for (;;) { uchar uinR[10], msgR[512]; int len = 0; // проверяем на входящие сообщения ICQReadMsg(client, uinR, msgR, len); if (len > 0) { string uinStr = CharArrayToString(uinR), // UIN отправителя msgStr = CharArrayToString(msgR); // сообщение uchar msgS[]; // добавляем перед сообщением Получено: и отсылаем обратно StringToCharArray("Получено: " + msgStr, msgS); ICQSendMsg(client, uinR, msgS); } Sleep(100); } }
Но конвертировать постоянно неудобно, поэтому Ваша библиотека намного юзабельней в этом смысле.
Еще думал по поводу прокси. Возможно есть какие-то настройки, которые будут адекватно работать для локальной машины? То есть если мы не используем прокси, то в прокси выставляются какие-то настройки по умолчанию и все работает. Как вариант сделать в библиотеке 2 функции Connect - для варианта с прокси и без
Изменения, внесенные в библиотеку коснулись не только типа передаваемого значения для строк (был char* а стал wchar_t*). Это было бы слишком просто. Изменился формат передаваемого сообщения (смотри функцию BuildQuery_SendMsg_Unicode в исходном коде dll) который стал универсальным (HTML) в отличие от родного (бинарного). То, что передаваемые русские литеры через IcqMod принимаются правильно, это заслуга родной программы ICQ на которой вы это тестируете. Попробуйте протестировать на приём русских сообщений на сайте http://wap.ebuddy.com/ или альтернативном ICQ менеджере, и вместо кириллицы вы увидите каракули. Мной было перепробовано с десяток ICQ менеджеров, на которых мой проект корректно работает не только с кириллицей, но и с любым другим языком мира. Извините, конечно, за рекламу.
На счёт прокси. Тестировал, но не локальные а удаленные SOCK4/SOCK5. Что-то у меня не получалось с ними работать. Поэтому, в проекте решил вообще отказаться от них. Если нужно, попробую сделать.Спасибо! Доходчиво объяснили.
Так, ветка давно не посещалась. У меня icq_power.mqh не компилируется, ругается *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initializing the compiler*.
Что бы это могло значить?
Так, ветка давно не посещалась. У меня icq_power.mqh не компилируется, ругается *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initializing the compiler*.
Что бы это могло значить?
это значит, что
MS Visual Studio compiler is not installed in the system
или
failed initializing the compiler
Что бы это могло значить?
Попробуйте протестировать на приём русских сообщений на сайте http://wap.ebuddy.com/ или альтернативном ICQ менеджере, и вместо кириллицы вы увидите каракули. Мной было перепробовано с десяток ICQ менеджеров, на которых мой проект корректно работает не только с кириллицей, но и с любым другим языком мира. Извините, конечно, за рекламу.
2 вопроса:
1) Ещё работает на x32 системах? (возможности проверить у меня нет).
2) Никто не переделывал под x64? (под x64 не работает) .
Буду очень благодарен за ответ. Переделывать пробовал - не получилось - при работе ругается
2013.11.07 02:14:24 icq_demo (EURUSD.m,M1) Status_RECV_ERRORPS: Нужно именно ICQ...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Связь ICQ и эксперта в MQL5:
Автор: Андрей