Es hat geklappt, und jetzt wird statt der falschen URL der Fehler 87 angezeigt. Und das ist noch schlimmer :) Ich habe es in WinHttpConnect. Was kann ich tun, oder ist die Funktion absi2unicode falsch?
#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);
}
Es hat geklappt, und jetzt wird statt einer ungültigen URL der Fehler 87 angezeigt. Und das ist noch schlimmer :) Ich habe es in WinHttpConnect. Was kann ich tun, oder ist die Funktion absi2unicode falsch?
Im Anhang zu diesem Beitrag finden Sie ein Archiv mit einem Textdokument. Ich weiß nicht, ob es Ihnen weiterhilft, aber sehen Sie es sich trotzdem an - es ist ein kleines Dokument. Darin geht es zwar um die Kodierung russischer Schriftarten, aber vielleicht gibt Ihnen der Inhalt des Dokuments eine Vorstellung davon. Sie kennen C++, im Gegensatz zu mir.
und jetzt erscheint anstelle einer falschen URL die Fehlermeldung 87. Das ist noch schlimmer :) Wurde natürlich in WinHttpConnect angezeigt. Was kann ich tun, oder ist die Funktion absi2unicode falsch?
Es ist besser, Standard-API-Funktionen für die Konvertierung zu verwenden.
Hier ist ein Beispielcode:
#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: Es wird über wininet.dll gemacht, also kann ich...
Beobachten Sie ihn ab diesem Punkt genau:
// 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.
Das mag albern klingen, aber... Haben Sie versucht, HTTP:// zur URL hinzuzufügen?
weiterhin mit Unicode zu kämpfen haben.
Es hat geklappt, und jetzt wird statt der falschen URL der Fehler 87 angezeigt. Und das ist noch schlimmer :)
Ich habe es in WinHttpConnect. Was kann ich tun, oder ist die Funktion absi2unicode falsch?
weiterhin mit Unicode zu kämpfen haben.
Es hat geklappt, und jetzt wird statt einer ungültigen URL der Fehler 87 angezeigt. Und das ist noch schlimmer :)
Ich habe es in WinHttpConnect. Was kann ich tun, oder ist die Funktion absi2unicode falsch?
Im Anhang zu diesem Beitrag finden Sie ein Archiv mit einem Textdokument. Ich weiß nicht, ob es Ihnen weiterhilft, aber sehen Sie es sich trotzdem an - es ist ein kleines Dokument. Darin geht es zwar um die Kodierung russischer Schriftarten, aber vielleicht gibt Ihnen der Inhalt des Dokuments eine Vorstellung davon. Sie kennen C++, im Gegensatz zu mir.
Sehen Sie hier, wie es gemacht wird.
scheint falsch zu sein. Können Sie es selbst in MQL umschreiben?
weiterhin mit Unicode zu kämpfen haben.
und jetzt erscheint anstelle einer falschen URL die Fehlermeldung 87. Das ist noch schlimmer :)
Wurde natürlich in WinHttpConnect angezeigt. Was kann ich tun, oder ist die Funktion absi2unicode falsch?
Es ist besser, Standard-API-Funktionen für die Konvertierung zu verwenden.
Hier ist ein Beispielcode:
Es wird über wininet.dll gemacht, also kann ich...
Beobachten Sie ihn ab diesem Punkt genau:
Seien Sie ab diesem Punkt vorsichtig: