с места сдвинулось, и теперь вместо неправильного урла, вылезла ошибка 87. А это еще хуже :) Вылезла конечно в WinHttpConnect. Что можно исправить? или функция absi2unicode неверная ?
#import "Winhttp.dll"int WinHttpOpen(string pwszUserAgent, int dwAccessType,
string pwszProxyName, string pwszProxyBypass, int dwFlags);
int WinHttpConnect(int hSession, /*string*/int& pswzServerName[], int nServerPort, int dwReserved);
#import "ntdll.dll"int RtlGetLastWin32Error();
int RtlSetLastWin32Error(int dwErrCode);
#import
start()
{
int hSession=WinHttpOpen("MqlHttp", 0, "", "", 0);
Print("hSession="+hSession);
string aHost="www.mql4.com";
RtlSetLastWin32Error(0); //сбрасываем последний код ошибкиint wHost[100]; int n=ansi2unicode(aHost, wHost);
int hConnect=WinHttpConnect(hSession, wHost, 80, 0);
if (hConnect<=0) Print("-Err create Connect "+RtlGetLastWin32Error());
}
// функция преобразования строки в массив//--------------------------------------------------------------- ansi2unicodeint ansi2unicode(string str, int &arr[])
{
int max=ArraySize(arr); int pos=0, i=0, x;
bool f=false;
for (x=0; i<max; f=!f, pos++) // пока есть место в массиве
{
int c=StringGetChar(str, pos); if (c==0) break; // конец строкиif (!f) x=c; else { i++; arr[i]=x+(c<<16); } // собираем символы в пары и складываем в массив
}
if (i>=max) { x=0; i=max-1; } elseif(!f) x=0; // терминирующий ноль
i++; arr[i]=x;
return(i);
}
с места сдвинулось, и теперь вместо неправильного урла, вылезла ошибка 87. А это еще хуже :) Вылезла конечно в WinHttpConnect. Что можно исправить? или функция absi2unicode неверная ?
Приложил к этому посту архив с текстовым документом. Уж даже и не знаю, поможет это Вам хоть чем-то, но в любом случае посмотрите - документик маленький. Там правда идёт разговор о кодировках русских шрифтов, но может содержание документа натолкнёт Вас на какую-то идею. Вы ведь, в отличие от меня, С++ знаете.
с места сдвинулось, и теперь вместо неправильного урла, вылезла ошибка 87. А это еще хуже :) Вылезла конечно в WinHttpConnect. Что можно исправить? или функция absi2unicode неверная ?
Для преобразования лучше воспользоваться стандартными API функциями.
Вот пример кода:
#import "kernel32.dll"int MultiByteToWideChar(int CodePage, int dwFlags, string lpMultiByteStr, int cbMultiByte, int& lpWideCharStr[], int cchWideChar);
#import "Winhttp.dll"int WinHttpOpen(int pwszUserAgent[], int dwAccessType, string pwszProxyName, string pwszProxyBypass, int dwFlags);
int WinHttpConnect(int hSession, int pswzServerName[], int nServerPort, int dwReserved);
int WinHttpCloseHandle(int hInternet);
#importvoid start()
{
int lpWideCharStr[];
L("MqlHttp", lpWideCharStr);
int hInternet = WinHttpOpen(lpWideCharStr, 0, "", "", 0);
if (hInternet > 0)
{
L("www.mql4.com", lpWideCharStr);
int hConnect = WinHttpConnect(hInternet, lpWideCharStr, 80, 0);
if (hConnect > 0)
{
WinHttpCloseHandle(hConnect);
}
WinHttpCloseHandle(hInternet);
}
}
int L(string lpMultiByteStr, int& lpWideCharStr[])
{
int cchWideChar = MultiByteToWideChar(0, 0, lpMultiByteStr, -1, lpWideCharStr, 0);
ArrayResize(lpWideCharStr, 1 + cchWideChar / 2);
MultiByteToWideChar(0, 0, lpMultiByteStr, -1, lpWideCharStr, cchWideChar);
return (cchWideChar);
}
alsu: Дык там через wininet.dll сделано, этак-то я и могу...
Смотрите там внимательно с этого места:
// Re-reads saved POST data byte-to-byte from file in the pseudo-character array// we need to send with HttpSendRequestA. This is due to the fact I know no clean// way to cast strings _plus_ binary file contents to a character array in MQL.// If you know how to do it properly feel free to contact me.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
может глупость,но ... HTTP:// к УРЛу не пробовал дописывать?
продолжаю борьбу с unicode.
с места сдвинулось, и теперь вместо неправильного урла, вылезла ошибка 87. А это еще хуже :)
Вылезла конечно в WinHttpConnect. Что можно исправить? или функция absi2unicode неверная ?
продолжаю борьбу с unicode.
с места сдвинулось, и теперь вместо неправильного урла, вылезла ошибка 87. А это еще хуже :)
Вылезла конечно в WinHttpConnect. Что можно исправить? или функция absi2unicode неверная ?
Приложил к этому посту архив с текстовым документом. Уж даже и не знаю, поможет это Вам хоть чем-то, но в любом случае посмотрите - документик маленький. Там правда идёт разговор о кодировках русских шрифтов, но может содержание документа натолкнёт Вас на какую-то идею. Вы ведь, в отличие от меня, С++ знаете.
Посмотрите, как это сделано здесь.
походу неверная. ПЫХЫПЫ в MQL сам переделаешь?
продолжаю борьбу с unicode.
с места сдвинулось, и теперь вместо неправильного урла, вылезла ошибка 87. А это еще хуже :)
Вылезла конечно в WinHttpConnect. Что можно исправить? или функция absi2unicode неверная ?
Для преобразования лучше воспользоваться стандартными API функциями.
Вот пример кода:
Дык там через wininet.dll сделано, этак-то я и могу...
Смотрите там внимательно с этого места:
Смотрите там внимательно с этого места: