Vielen Dank für den Artikel. Es war interessant.
Obwohl ModIcq ist perfekt nutzbar ohne Änderung, ist es einfacher, mit der modifizierten Version zu arbeiten :)
IcqMod.dll kann nicht direkt in MT5 verwendet werden, da es mit Ansi-Strings arbeitet, und in MT5 sind die Strings im Unicode-Format. Daher musste das Projekt umgestaltet werden, um mit Nachrichten im Unicode-Format arbeiten zu können (zu diesem Zweck verwendet das Protokoll nicht das binäre, sondern das HTML-Format). Jetzt können Sie Nachrichten in jeder Sprache der Welt senden und empfangen! Ich hoffe, dass das Projekt auf Nachfrage stößt, so dass ich es nach Ihren Wünschen verbessern kann.
IcqMod.dll kann nicht direkt in MT5 verwendet werden, da es mit Ansi-Strings arbeitet, und in MT5 sind Strings im Unicode-Format.
Nicht ganz. Es ist möglich, mit StringToCharArray zu konvertieren. Zum Beispiel, dieser Code funktioniert für mich
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() { // Zeichenketten in ein Array von Zeichen umwandeln, das an die DLL übergeben wird uchar login[], password[], server[]; StringToCharArray("123456789", login); StringToCharArray("password", password); StringToCharArray("login.icq.com", server); // verbinden ICQ_CLIENT client; ICQConnect(client, server, 5190, login, password, 0); for (;;) { uchar uinR[10], msgR[512]; int len = 0; // Prüfung auf eingehende Nachrichten ICQReadMsg(client, uinR, msgR, len); if (len > 0) { string uinStr = CharArrayToString(uinR), // UIN des Absenders msgStr = CharArrayToString(msgR); // Nachricht uchar msgS[]; // vor der Nachricht Received: hinzufügen und zurücksenden StringToCharArray("Empfangen:" + msgStr, msgS); ICQSendMsg(client, uinR, msgS); } Sleep(100); } }
Aber es ist lästig, die ganze Zeit zu konvertieren, so dass Ihre Bibliothek ist viel mehr brauchbar in diesem Sinne.
Ich habe auch über Proxies nachgedacht. Vielleicht gibt es einige Einstellungen, die für einen lokalen Rechner ausreichen? Das heißt, wenn wir keinen Proxy verwenden, dann werden einige Standardeinstellungen im Proxy gesetzt und alles funktioniert. Als Option, 2 Connect-Funktionen in der Bibliothek zu machen - für die Variante mit und ohne Proxy
Die in der Bibliothek vorgenommenen Änderungen betrafen nicht nur den Typ des übergebenen Wertes für Strings (aus char* wurde wchar_t*). Das wäre zu einfach. Das Format der übermittelten Nachricht hat sich geändert (siehe BuildQuery_SendMsg_Unicode-Funktion im Quellcode der Dll), die nun universell (HTML) im Gegensatz zu nativ (binär) ist. Die Tatsache, dass die über IcqMod übertragenen russischen Zeichen korrekt empfangen werden, ist das Verdienst des nativen ICQ-Programms, mit dem Sie es testen. Versuchen Sie, den Empfang russischer Nachrichten mit http://wap.ebuddy.com/ oder einem anderen ICQ-Manager zu testen, und Sie werden Kritzeleien anstelle von Kyrillisch sehen. Ich habe ein Dutzend ICQ-Manager ausprobiert, auf denen mein Projekt nicht nur mit Kyrillisch, sondern auch mit jeder anderen Sprache der Welt korrekt funktioniert. Entschuldigung, natürlich für die Werbung.
Über Proxies. Ich habe getestet, aber nicht lokal, sondern remote SOCK4/SOCK5. Es ist mir nicht gelungen, mit ihnen zu arbeiten. Deshalb habe ich beschlossen, sie in dem Projekt überhaupt nicht zu verwenden. Wenn nötig, werde ich versuchen, es zu tun.Ich danke Ihnen! Das war sehr deutlich.
Also, ich habe diesen Thread schon lange nicht mehr besucht. Meine icq_power.mqh lässt sich nicht kompilieren, es heißt *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initialising the compiler*.
Was könnte das bedeuten?
Also, ich habe diesen Thread schon lange nicht mehr besucht. Meine icq_power.mqh lässt sich nicht kompilieren, es heißt *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initialising the compiler*.
Was könnte das bedeuten?
Es bedeutet, dass
MS Visual Studio Compiler ist nicht im System installiert
oder
die Initialisierung des Compilers fehlgeschlagen ist
Was würde das bedeuten?
Versuchen Sie, den Empfang russischer Nachrichten auf http://wap.ebuddy.com/ oder einem alternativen ICQ-Manager zu testen, und Sie werden Kritzeleien anstelle von Kyrillisch sehen. Ich habe ein Dutzend ICQ-Manager ausprobiert, bei denen mein Projekt nicht nur mit Kyrillisch, sondern auch mit jeder anderen Sprache der Welt korrekt funktioniert. Entschuldigung, natürlich, für die Werbung.
2 Fragen:
1) Funktioniert es noch auf x32-Systemen? (Ich habe keine Chance, es zu überprüfen).
2) Niemand hat nicht für x64 umgestaltet? (unter x64 funktioniert nicht) .
Ich werde sehr dankbar für die Antwort sein. Ich habe versucht, es neu zu machen - es hat nicht funktioniert - wenn ich arbeite, stürzt es ab
2013.11.07 02:14:24 icq_demo (EURUSD.m,M1) Status_RECV_ERRORPS: Brauche genau ICQ...
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Verbindung eines Expert-Systems mit ICQ in MQL5 :
In diesem Beitrag wird das Verfahren zum Austausch von Informationen zwischen dem Expert-System und ICQ-Nutzern vorgestellt und anhand einiger Beispiele veranschaulicht. Die bereitgestellten Materialien können für alle von Interesse sein, die Handelsinformationen unabhängig von Ihrem stationären Ausgabegerät mithilfe einer ICQ-Instanz auf Ihrem Mobiltelefon oder PDA empfangen möchten.
Autor: Andrey Voytenko