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);
}
WinHttpConnect() を見てみました。マルチバイトエンコーディングのための実装はない。
DLLでシェル化して変換することは可能ですか?
。
いや、DLLには必要ない。 オプションなのはわかるけど、間違ってる...。
wininet.dllは全ての機能が使えるのに、Winhttpにはこんなバカげたバグが...。
Kernel32からGetLastErrorを呼び出せれば いいのですが、mql4は有害で、パラメータが違っても同じ名前の関数を作ることができないので...。
ところで、このスクリプトをあなたのマシンで動かしてみたことはありますか?
選択肢の一つであることは理解できるが、それとは違う......。
例えば、wininet.dllでは全ての機能が動作するのですが、Winhttpではこんなくだらない失速が・・・。
Kernel32からGetLastErrorを呼び出せればいいのですが、mql4は有害で、パラメータが違っても同じ名前の関数を作ることができないので...。
ところで、このスクリプトをあなたのマシンで動かしてみたことはありますか?
選択肢の一つであることは理解できますが、そうもいきません。
wininet.dllなどは、機能はすべて動くのですが、Winhttpがこんなにもバカバカしく止まってしまうのです...。
Kernel32からGetLastErrorを呼び出せればいいのですが、mql4は有害で、パラメータが違っても同じ名前の関数を作ることができないので...。
GetLastError() は低レベルで呼び出す必要があります -->RtlGetLastWin32Error().イルナーは、その時代にそれを提案した。ここでは、その使用例をご紹介します。
WinHttpConnect() は、MQL4では 動作しません。
MQL4で WinHttpConnect() を使用しても何も動作しません。
変換して みたらどうだろう。
時間があれば、例を作ってみようと思います。そうでなければ...このC++のコードは、MQL4に変換する必要があります。
wstring は int の配列に置き換えられ、サイズを再計算する際にこれを考慮する必要があります。変換して みたらどうだろう。
時間があれば、例を作ってみようと思います。そうでなければ...このC++のコードは、MQL4に変換する必要があります。
wstringをint型の配列に置き換え、サイズを再計算する際にそれを考慮する必要があります。こんな感じで持っています。
私はこれを持っています。
EMNIPでは、文字列が連続したメモリブロックの中にあることを規格が保証していないので、&sStringW[0]の構造を使うのはもってのほかです。
基本的には同じ卵です。でも、私のは100%規格通りです :)
EMPでは、文字列が連続したメモリブロックに配置されることを保証していないため、&sStringW[0]構造を使用することは危険である。
同じ卵全般。でも、私のは100%規格通りです :)
知らなかったんだ...
まあ、マイクロソフトの実装は全部(たぶん全部)OKのようなので、他は保証できませんが。