wininet.dll, per esempio, tutte le sue funzioni funzionano, ma Winhttp ha un arresto così stupido...
Se si potesse chiamare GetLastError da Kernel32, ma mql4 è dannoso e non permette di fare funzioni con nomi identici, anche con parametri diversi...
GetLastError() dovrebbe essere chiamato a basso livello --> RtlGetLastWin32Error(). Ilnur l'ha suggerito a suo tempo. Ecco alcuni esempi di come usarlo.
Se ho tempo, cercherò di fare un esempio. Altrimenti... Questo codice C++ dovrebbe essere convertito in MQL4:
La wstring deve essere sostituita con un array di ints e tenerne conto quando si ricalcola la dimensione.
Ho capito così:
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);
}
EMP, lo standard non garantisce la posizione della stringa in un blocco di memoria contiguo, quindi usare il costrutto &sStringW[0] è pieno di pericoli.
Stesse uova in generale. Ma il mio è al 100% secondo lo standard :)
Ho guardato WinHttpConnect(). Non ha un'implementazione per la codifica multibyte.
Posso usare una DLL per la shell e convertirla?
No. Non ne ho bisogno in una DLL. So che è un'opzione, ma è sbagliato...
wininet.dll funziona con tutte le sue funzioni, ma Winhttp ha un bug così stupido...
Se si potesse chiamare GetLastError da Kernel32, ma mql4 è dannoso e non permette di fare funzioni con nomi identici, anche con parametri diversi...
A proposito, hai provato a eseguire questo script sulla tua macchina? Forse è solo un mio problema?
Capisco che è un'opzione, ma non è la stessa cosa...
Per esempio, tutte le sue funzioni funzionano con wininet.dll, ma in Winhttp c'è un tale stupido stallo...
Se si potesse chiamare GetLastError da Kernel32, ma mql4 è dannoso e non permette di fare funzioni con nomi identici, anche con parametri diversi...
A proposito, hai provato a eseguire questo script sulla tua macchina? Forse è solo un mio problema?
Capisco che è un'opzione, ma non funziona così...
wininet.dll, per esempio, tutte le sue funzioni funzionano, ma Winhttp ha un arresto così stupido...
Se si potesse chiamare GetLastError da Kernel32, ma mql4 è dannoso e non permette di fare funzioni con nomi identici, anche con parametri diversi...
GetLastError() dovrebbe essere chiamato a basso livello --> RtlGetLastWin32Error(). Ilnur l'ha suggerito a suo tempo. Ecco alcuni esempi di come usarlo.
WinHttpConnect() non funziona in MQL4.
Niente funzionerà con WinHttpConnect() in MQL4.
Potresti provare a convertire.
Se ho tempo, cercherò di fare un esempio. Altrimenti... Questo codice C++ deve essere convertito in MQL4:
wstring dovrebbe essere sostituito con un array di ints e questo dovrebbe essere preso in considerazione quando si ricalcola la dimensione.Potresti provare a convertire.
Se ho tempo, cercherò di fare un esempio. Altrimenti... Questo codice C++ dovrebbe essere convertito in MQL4:
La wstring deve essere sostituita con un array di ints e tenerne conto quando si ricalcola la dimensione.Ho capito così:
Ho questo:
EMNIP, lo standard non garantisce la posizione della stringa in un blocco continuo di memoria, quindi usare il costrutto &sStringW[0] è difficile.
Fondamentalmente le stesse uova. Ma il mio è al 100% secondo lo standard :)
EMP, lo standard non garantisce la posizione della stringa in un blocco di memoria contiguo, quindi usare il costrutto &sStringW[0] è pieno di pericoli.
Stesse uova in generale. Ma il mio è al 100% secondo lo standard :)
Non sapevo...
Beh, sembra che tutte (probabilmente tutte) le implementazioni di Microsoft siano a posto con questo, non posso garantire per le altre.