Pouvez-vous me dire s'il est possible de connaître la longueur d'un fichier avant qu'il ne soit lu ? Ceci afin de pouvoir faire une estimation du pourcentage de données chargées dans le cas de gros volumes, de vitesses lentes.
Pouvez-vous me dire s'il est possible de connaître la longueur d'un fichier avant qu'il ne soit lu ? Ceci afin de pouvoir estimer le pourcentage de données téléchargées dans le cas de gros volumes, de vitesses lentes.
Je pense que oui. et vous le trouverez dans la description msdn de wininet.dll.
Pouvez-vous me dire s'il est possible de connaître la longueur d'un fichier avant qu'il ne soit lu ? Ceci afin de pouvoir faire une estimation du pourcentage de données chargées dans le cas de gros volumes, de vitesses lentes.
Je pense que oui, et vous le trouverez dans la description msdn de wininet.dll.
Je suppose que ce serait un bon sujet pour un article avec une divulgation complète de l'utilisation de wininet.dll.
Pouvez-vous me dire s'il est possible de connaître la longueur d'un fichier avant qu'il ne soit lu ? Il s'agit de pouvoir faire une estimation du pourcentage de données téléchargées en cas de volumes importants, de vitesses lentes.
Il est possible que le serveur signale la longueur du contenu.
Pour obtenir des informations sur la requête, vous pouvez utiliser la fonction HttpQueryInfo de wininet.dll - cette fonction renvoie les informations requises dans le tableau spécifié sous forme de chaîne.
Exemple d'utilisation :
dans la section #import, ajouter une description :
int HttpQueryInfoW(int hRequest,int dwInfoLevel,uchar &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex);
ajouter également
#define HTTP_QUERY_CONTENT_LENGTH 5Ensuite, dans le code, après avoir appelé InternetOpenUrlW et obtenu hURL, vous devez ajouter le code :
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("Content size=",ContentSize_HttpQueryInfoW); }
dans notre exemple de test de yandex.ru, nous obtenons "Content size= 44649", ce qui correspond à la taille du fichier téléchargé. c'est-à-dire qu'avant le début du téléchargement (InternetReadFile), nous connaissons la longueur du contenu.
Cette fonctionnalité a été ajoutée à la version actuelle du script.
Merci pour cet effort !
Cela fonctionne parfaitement !
Lorsque j'essaie de l'exécuter, le metatrader se ferme avec une erreur fatale. Une solution ?
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
WININET_TEST:
Voici un exemple simple qui montre comment télécharger une page (fichier) à partir d'Internet en utilisant la bibliothèque wininet.dll.
Auteur : MetaQuotes