Potete dirmi se è possibile conoscere la lunghezza di un file prima che venga letto? Questo per poter fare una stima della percentuale di dati caricati in caso di grandi volumi e velocità ridotte.
Potete dirmi se è possibile conoscere la lunghezza di un file prima che venga letto? Questo per poter stimare la percentuale di dati scaricati in caso di grandi volumi e velocità ridotte.
Penso che sia possibile. e lo troverete nella descrizione msdn di wininet.dll.
Potete dirmi se è possibile conoscere la lunghezza di un file prima che venga letto? Questo per poter fare una stima della percentuale di dati caricati in caso di grandi volumi e velocità ridotte.
Penso che sia possibile. e lo troverete nella descrizione msdn di wininet.dll.
Immagino che sarebbe un buon argomento per un articolo con la divulgazione completa dell'uso di wininet.dll.
Potete dirmi se è possibile conoscere la lunghezza di un file prima che venga letto? Questo per poter fare una stima della percentuale di dati scaricati in caso di grandi volumi e velocità ridotte.
Esiste la possibilità che il server riporti la lunghezza del contenuto.
Per ottenere informazioni sulla richiesta è possibile utilizzare la funzione HttpQueryInfo di wininet.dll: questa funzione restituisce le informazioni richieste all'array specificato in forma di stringa.
Esempio di utilizzo:
nella sezione #import, aggiungere una descrizione:
int HttpQueryInfoW(int hRequest,int dwInfoLevel,uchar &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex);
aggiungere anche
#define HTTP_QUERY_CONTENT_LENGTH 5poi nel codice dopo aver chiamato InternetOpenUrlW e aver ottenuto hURL è necessario aggiungere il codice:
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("Contenuto=",ContentSize_HttpQueryInfoW); }
nel nostro esempio di test da yandex.ru otteniamo "Content size= 44649", che corrisponde alla dimensione del file scaricato. cioè prima dell'inizio del download (InternetReadFile) conosciamo la lunghezza del contenuto.
Aggiunta questa funzione alla versione attuale dello script.
Grazie per l'impegno!
Funziona perfettamente!
Quando provo ad eseguirlo la metatrader si chiude con un errore fatale. Qualche soluzione?
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
WININET_TEST:
Ecco un semplice esempio che mostra come scaricare una pagina (file) da Internet utilizzando la libreria wininet.dll.
Autore: MetaQuotes