Ele saiu do chão, e agora, em vez de uma url inválida, o erro 87 está aparecendo. E isto é ainda pior :) Consegui-o em WinHttpConnect. O que posso consertar? Ou a função absi2unicode está errada?
#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);
}
Ele saiu do chão, e agora, em vez de uma url inválida, o erro 87 está aparecendo. E isto é ainda pior :) Consegui-o em WinHttpConnect. O que posso consertar? Ou a função absi2unicode está errada?
Anexado a este post está um arquivo com um documento de texto. Não sei se isso o ajuda de alguma forma, mas dê uma olhada de qualquer forma - é um documento pequeno. Ele fala de codificação de fontes russas, mas talvez o conteúdo do documento lhe dê alguma idéia. Você conhece C++, ao contrário de mim.
ele saiu do chão, e agora ao invés da url errada, surge o erro 87. Isto é ainda pior :) Chegou ao WinHttpConnect, é claro. O que posso consertar? Ou a função absi2unicode está errada?
É melhor usar as funções API padrão para conversão.
Aqui está um código de amostra:
#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);
}
// 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.
Isso pode ser uma bobagem, mas... Você já tentou adicionar HTTP:// à URL?
continuam a lutar com o unicode.
Ele saiu do chão, e agora, em vez de uma url inválida, o erro 87 está aparecendo. E isto é ainda pior :)
Consegui-o em WinHttpConnect. O que posso consertar? Ou a função absi2unicode está errada?
continuam a lutar com o unicode.
Ele saiu do chão, e agora, em vez de uma url inválida, o erro 87 está aparecendo. E isto é ainda pior :)
Consegui-o em WinHttpConnect. O que posso consertar? Ou a função absi2unicode está errada?
Anexado a este post está um arquivo com um documento de texto. Não sei se isso o ajuda de alguma forma, mas dê uma olhada de qualquer forma - é um documento pequeno. Ele fala de codificação de fontes russas, mas talvez o conteúdo do documento lhe dê alguma idéia. Você conhece C++, ao contrário de mim.
Veja como isso é feito aqui.
parece estar errado. Você mesmo pode reescrevê-lo em MQL?
continuam a lutar com o unicode.
ele saiu do chão, e agora ao invés da url errada, surge o erro 87. Isto é ainda pior :)
Chegou ao WinHttpConnect, é claro. O que posso consertar? Ou a função absi2unicode está errada?
É melhor usar as funções API padrão para conversão.
Aqui está um código de amostra:
É feito via wininet.dll, então eu posso...
Cuidado a partir deste ponto:
Observe atentamente a partir deste ponto: