Können Sie mir sagen, ob es möglich ist, die Länge einer Datei zu kennen, bevor sie gelesen wird? Dies ist notwendig, um den Prozentsatz der geladenen Daten im Falle großer Mengen und langsamer Geschwindigkeiten abschätzen zu können.
Können Sie mir sagen, ob es möglich ist, die Länge einer Datei zu kennen, bevor sie gelesen wird? Damit kann ich den Prozentsatz der heruntergeladenen Daten bei großen Mengen und langsamen Geschwindigkeiten abschätzen.
Ich glaube, das ist möglich. Sie finden es in der msdn-Beschreibung von wininet.dll.
Können Sie mir sagen, ob es möglich ist, die Länge einer Datei zu kennen, bevor sie gelesen wird? Dies ist notwendig, um den Prozentsatz der geladenen Daten im Falle großer Mengen und langsamer Geschwindigkeiten abschätzen zu können.
Ich glaube, das können Sie. Und Sie finden es in der msdn-Beschreibung von wininet.dll.
Ich nehme an, es wäre ein gutes Thema für einen Artikel mit vollständiger Offenlegung der wininet. dll-Nutzung
Können Sie mir sagen, ob es möglich ist, die Länge einer Datei zu kennen, bevor sie gelesen wird? Dies ist notwendig, um den Prozentsatz der heruntergeladenen Daten im Falle großer Mengen und langsamer Geschwindigkeiten abschätzen zu können.
Es besteht die Möglichkeit, dass der Server die Länge des Inhalts meldet.
Um Informationen über die Anfrage zu erhalten, können Sie die Funktion HttpQueryInfo aus wininet.dll verwenden - diese Funktion gibt die erforderlichen Informationen in Form von Strings an das angegebene Array zurück.
Beispiel für die Verwendung:
Fügen Sie im Abschnitt #import eine Beschreibung hinzu:
int HttpQueryInfoW(int hRequest,int dwInfoLevel,uchar &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex);
fügen Sie auch
#define HTTP_QUERY_CONTENT_LENGTH 5dann im Code nach dem Aufruf von InternetOpenUrlW und dem Erhalt von hURL müssen Sie den Code hinzufügen:
int BufLen=2048; int ind=0; uchar buf0[2048]; string s=""; int ContentSize_HttpQueryInfoW=0; int iRes; iRes=HttpQueryInfoW(hURL,HTTP_QUERY_CONTENT_LENGTH,buf0,BufLen,ind); if(iRes<=0) { Print("Error in call of HttpQueryInfoW()"); } else { s=""; for(int k=0;k<BufLen;k++) { s=s+CharToString(buf0[k]);} Print("HTTP_QUERY_CONTENT_LENGTH:",s); if (StringLen(s)>0) ContentSize_HttpQueryInfoW=StringToInteger(s); Alert("Inhalt size=",ContentSize_HttpQueryInfoW); }
in unserem Testbeispiel von yandex.ru erhalten wir "Content size= 44649", was der Größe der heruntergeladenen Datei entspricht. d.h. vor dem Start des Downloads (InternetReadFile) kennen wir die Länge des Inhalts.
Diese Funktion wurde in der aktuellen Version des Skripts hinzugefügt.
Vielen Dank für die Mühe!
Es funktioniert perfekt!
Wenn ich versuche, es auszuführen, wird der Metatrader mit einem schwerwiegenden Fehler geschlossen. Jede Lösung?
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
WININET_TEST:
Hier ein einfaches Beispiel das demonstriert wie eine Seite(Datei) aus dem Internet mittels der Library wininet.dll heruntergeladen werden kann.
Autor: MetaQuotes Software Corp.