Obrigado pelo artigo. Foi interessante.
Embora o ModIcq seja perfeitamente utilizável sem modificações, é mais fácil trabalhar com a versão modificada :)
O IcqMod.dll não pode ser usado diretamente no MT5, porque funciona com cadeias de caracteres Ansi, e no MT5 as cadeias de caracteres estão no formato Unicode. Portanto, o projeto teve de ser redesenhado para funcionar com mensagens em Unicode (para isso, o protocolo não usa formato binário, mas HTML). Agora, envie e receba mensagens em qualquer idioma do mundo! Espero que o projeto tenha demanda, o que permitirá aprimorá-lo de acordo com seus desejos.
O IcqMod.dll não pode ser usado diretamente no MT5, porque funciona com cadeias de caracteres Ansi, e no MT5 as cadeias de caracteres estão no formato Unicode.
Não exatamente. É possível converter usando StringToCharArray. Por exemplo, este código funciona para mim
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() { // converter strings em uma matriz de caracteres a ser passada para a dll uchar login[], password[], server[]; StringToCharArray("123456789", login); StringToCharArray("password", password); StringToCharArray("login.icq.com", server); // conectar ICQ_CLIENT client; ICQConnect(client, server, 5190, login, password, 0); for (;;) { uchar uinR[10], msgR[512]; int len = 0; // verificar se há mensagens recebidas ICQReadMsg(client, uinR, msgR, len); if (len > 0) { string uinStr = CharArrayToString(uinR), // UIN do remetente msgStr = CharArrayToString(msgR); // mensagem uchar msgS[]; // adicionar antes da mensagem Received: e enviá-la de volta StringToCharArray("Recebido: " + msgStr, msgS); ICQSendMsg(client, uinR, msgS); } Sleep(100); } }
Mas é inconveniente converter o tempo todo, portanto, sua biblioteca é muito mais útil nesse sentido.
Também pensei em proxies. Talvez existam algumas configurações que funcionem adequadamente em um computador local? Ou seja, se não usarmos um proxy, algumas configurações padrão serão definidas no proxy e tudo funcionará. Como uma opção para criar 2 funções Connect na biblioteca - para a variante com e sem proxy
As alterações feitas na biblioteca não afetaram apenas o tipo de valor passado para strings (era char* e passou a ser wchar_t*). Isso seria muito simples. O formato da mensagem transmitida foi alterado (consulte a função BuildQuery_SendMsg_Unicode no código-fonte da dll), que se tornou universal (HTML) em vez de nativo (binário). O fato de os literais russos transmitidos pelo IcqMod serem recebidos corretamente é mérito do programa ICQ nativo no qual você está testando. Tente testar a recepção de mensagens em russo no http://wap.ebuddy.com/ ou em um gerenciador de ICQ alternativo e você verá rabiscos em vez de cirílico. Experimentei uma dúzia de gerenciadores de ICQ nos quais meu projeto funciona corretamente, não apenas com cirílico, mas também com qualquer outro idioma do mundo. Desculpe-me, é claro, pela propaganda.
Sobre proxies. Eu testei, mas não localmente, mas remotamente SOCK4/SOCK5. Não consegui trabalhar com eles. Por isso, decidi não usá-los de forma alguma no projeto. Se necessário, tentarei fazer isso.Obrigado! Isso ficou muito claro.
Faz muito tempo que não visito este tópico. Meu icq_power.mqh não compila, ele diz *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initialising the compiler*.
O que isso pode significar?
Faz muito tempo que não visito este tópico. Meu icq_power.mqh não compila, ele diz *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initialising the compiler*.
O que isso pode significar?
Significa que
O compilador do MS Visual Studio não está instalado no sistema
ou
falha ao inicializar o compilador
O que isso significa?
Tente testar a recepção de mensagens em russo no http://wap.ebuddy.com/ ou em um gerenciador de ICQ alternativo e você verá rabiscos em vez de cirílico. Experimentei uma dúzia de gerenciadores de ICQ, nos quais meu projeto funciona corretamente não apenas com cirílico, mas também com qualquer outro idioma do mundo. Desculpe-me, é claro, pela propaganda.
2 perguntas:
1) Ele ainda funciona em sistemas x32? (Não tenho a chance de verificar).
2) Ninguém redesenhou para o x64? (no x64 não funciona).
Ficarei muito grato pela resposta. Tentei refazê-lo - não funcionou - quando estou trabalhando, ele trava
2013.11.07 02:14:24 icq_demo (EURUSD.m,M1) Status_RECV_ERRORPS: Preciso exatamente do ICQ...
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Conexão do Expert Advisor com ICQ no MQL5 foi publicado:
Este artigo descreve o método de troca de informação entre o Expert Advisor e os usuários do ICQ, são apresentados vários exemplos. O material fornecido será interessante para aqueles que queiram receber informações de negócio remotamente de um terminal de cliente através de um cliente ICQ em seus celulares ou PDA.
Autor: Andrey Voytenko