Ich habe mir WinHttpConnect() angesehen. Es hat keine Implementierung für Multibyte-Kodierung.
Kann ich eine DLL für die Shell verwenden und sie konvertieren?
Nein. Ich brauche es nicht in einer DLL. Ich weiß, dass es eine Option ist, aber es ist falsch...
wininet.dll funktioniert mit allen Funktionen, aber Winhttp hat so einen blöden Fehler...
Man könnte GetLastError von Kernel32 aus aufrufen, aber mql4 ist schädlich und erlaubt es nicht, Funktionen mit identischen Namen zu erstellen, auch nicht mit unterschiedlichen Parametern...
Übrigens, haben Sie versucht, dieses Skript auf Ihrem Rechner auszuführen? Vielleicht ist es nur mein Problem?
Ich verstehe, dass es eine Option ist, aber es ist nicht dasselbe...
Zum Beispiel funktionieren alle seine Funktionen mit wininet.dll, aber in Winhttp gibt es so einen dummen Stillstand...
Man könnte GetLastError von Kernel32 aus aufrufen, aber mql4 ist schädlich und erlaubt es nicht, Funktionen mit identischen Namen zu erstellen, auch nicht mit unterschiedlichen Parametern...
Übrigens, haben Sie versucht, dieses Skript auf Ihrem Rechner auszuführen? Vielleicht ist es nur mein Problem?
Was wäre, wenn Sie eine Zwischen-DLL zwischen GetLastError_2 und Kernel32 einfügen? Würde das nicht funktionieren?
Ich verstehe, dass es eine Option ist, aber so funktioniert es nicht...
wininet.dll, zum Beispiel, alle seine Funktionen funktionieren, aber Winhttp hat so eine dumme Unterbrechung...
Man könnte GetLastError von Kernel32 aus aufrufen, aber mql4 ist schädlich und erlaubt es nicht, Funktionen mit identischen Namen zu erstellen, auch nicht mit unterschiedlichen Parametern...
Wenn ich Zeit habe, werde ich versuchen, ein Beispiel zu geben. Ansonsten... Dieser C++-Code sollte in MQL4 umgewandelt werden:
Der wstring muss durch ein Array von ints ersetzt werden, was bei der Neuberechnung der Größe zu berücksichtigen ist.
Ich habe es so verstanden:
inlinestd::wstring AnsiToUnicode(conststd::string &sSourceA, // Строка для преобразования.constint nCodePage) // Кодовая страница может быть одним из значений:// CP_ACP Системное умолчание Windows кодовых страниц ANSI.// CP_OEMCP Нынешняя система OEM кода страницы.// CP_MACCP Нынешняя система Macintosh код страницы.// CP_SYMBOL Символ кода страницы (42).// CP_THREAD_ACP Код Windows ANSI страницы для текущего потока. // CP_UTF7 UTF-7. Используйте это значение только тогда, когда вынужден от транспортного механизма 7-бит. Использование UTF-8 является предпочтительным.
{ // CP_UTF8 UTF-8.int nLength = 0;
std::wstring sStringW = L"";
if (sSourceA.size() == 0) return(sStringW);
if ((nLength = ::MultiByteToWideChar(nCodePage, 0, sSourceA.c_str(), -1, NULL, 0)) == 0) throw(_T("Ошибка в функции \"Utils::StringSTL::AnsiToUnicode()\". В строке отсутствуют символы."));
sStringW.resize(nLength - 1);
if ((nLength = ::MultiByteToWideChar(nCodePage, 0, sSourceA.c_str(), -1, LPWSTR(sStringW.c_str()), nLength)) == 0) throw(_T("Ошибка в функции \"Utils::StringSTL::AnsiToUnicode()\". Строка не преобразована."));
return(sStringW);
}
EMNIP garantiert der Standard nicht die Position der Zeichenkette in einem zusammenhängenden Speicherblock, so dass die Verwendung des &sStringW[0]-Konstrukts problematisch ist.
Im Grunde sind es dieselben Eier. Aber meine entspricht zu 100% der Norm :)
EMP, der Standard garantiert nicht, dass die Zeichenkette in einem zusammenhängenden Speicherblock gespeichert wird, so dass die Verwendung des &sStringW[0]-Konstrukts mit Gefahren verbunden ist.
Im Allgemeinen die gleichen Eier. Aber meine entspricht zu 100% der Norm :)
TheXpert: Nun, es scheint, dass alle (wahrscheinlich alle) Implementierungen von Microsoft damit einverstanden sind, für die anderen kann ich mich nicht verbürgen.
Bislang hatte ich keine Probleme. Ich habe meinen Code entsprechend dem Standard korrigiert.
Ich habe mir WinHttpConnect() angesehen. Es hat keine Implementierung für Multibyte-Kodierung.
Kann ich eine DLL für die Shell verwenden und sie konvertieren?
Nein. Ich brauche es nicht in einer DLL. Ich weiß, dass es eine Option ist, aber es ist falsch...
wininet.dll funktioniert mit allen Funktionen, aber Winhttp hat so einen blöden Fehler...
Man könnte GetLastError von Kernel32 aus aufrufen, aber mql4 ist schädlich und erlaubt es nicht, Funktionen mit identischen Namen zu erstellen, auch nicht mit unterschiedlichen Parametern...
Übrigens, haben Sie versucht, dieses Skript auf Ihrem Rechner auszuführen? Vielleicht ist es nur mein Problem?
Ich verstehe, dass es eine Option ist, aber es ist nicht dasselbe...
Zum Beispiel funktionieren alle seine Funktionen mit wininet.dll, aber in Winhttp gibt es so einen dummen Stillstand...
Man könnte GetLastError von Kernel32 aus aufrufen, aber mql4 ist schädlich und erlaubt es nicht, Funktionen mit identischen Namen zu erstellen, auch nicht mit unterschiedlichen Parametern...
Übrigens, haben Sie versucht, dieses Skript auf Ihrem Rechner auszuführen? Vielleicht ist es nur mein Problem?
Ich verstehe, dass es eine Option ist, aber so funktioniert es nicht...
wininet.dll, zum Beispiel, alle seine Funktionen funktionieren, aber Winhttp hat so eine dumme Unterbrechung...
Man könnte GetLastError von Kernel32 aus aufrufen, aber mql4 ist schädlich und erlaubt es nicht, Funktionen mit identischen Namen zu erstellen, auch nicht mit unterschiedlichen Parametern...
GetLastError() sollte auf niedriger Ebene aufgerufen werden --> RtlGetLastWin32Error(). Ilnur hat es seinerzeit vorgeschlagen. Hier sind einige Beispiele für die Verwendung.
WinHttpConnect() wird in MQL4 nicht funktionieren.
Nichts wird mit WinHttpConnect() in MQL4 funktionieren.
Sie könnten versuchen, umzuwandeln.
Wenn ich Zeit habe, werde ich versuchen, ein Beispiel zu geben. Ansonsten... Dieser C++-Code sollte in MQL4 umgewandelt werden:
wstring sollte durch ein Array von Ints ersetzt werden und dies sollte bei der Neuberechnung der Größe berücksichtigt werden.Sie könnten versuchen, umzuwandeln.
Wenn ich Zeit habe, werde ich versuchen, ein Beispiel zu geben. Ansonsten... Dieser C++-Code sollte in MQL4 umgewandelt werden:
Der wstring muss durch ein Array von ints ersetzt werden, was bei der Neuberechnung der Größe zu berücksichtigen ist.Ich habe es so verstanden:
Ich habe das hier:
EMNIP garantiert der Standard nicht die Position der Zeichenkette in einem zusammenhängenden Speicherblock, so dass die Verwendung des &sStringW[0]-Konstrukts problematisch ist.
Im Grunde sind es dieselben Eier. Aber meine entspricht zu 100% der Norm :)
EMP, der Standard garantiert nicht, dass die Zeichenkette in einem zusammenhängenden Speicherblock gespeichert wird, so dass die Verwendung des &sStringW[0]-Konstrukts mit Gefahren verbunden ist.
Im Allgemeinen die gleichen Eier. Aber meine entspricht zu 100% der Norm :)
Ich wusste nicht, dass...
Nun, es scheint, dass alle (wahrscheinlich alle) Implementierungen von Microsoft damit einverstanden sind, für die anderen kann ich mich nicht verbürgen.