xsi (Normal User)
Newbie
Messaggi: 19
Iscritto: 07/04/2010
|
Buongiorno, ieri ero in ricerca di un modo di scaricare file tramite un applicazione che riportasse anche velocità di download, peso del file, progressbar e ulteriori informazioni. Proprio su questo forum ho trovato l'applicazione che riporto in allegato. Apro il progetto su vb 2010 e provo il download di alcuni file (di piccole dimensioni) e rilevo che funziona tutto correttamente. Successivamente ho provato con file di dimensioni maggiori (300mb) e l'applicazione termina il download a circa 20000kb riportandomi come errore sul codice la seguente stringa:
Codice sorgente - presumibilmente C# / VB.NET |
Dim percent As Short = (nRead * 100) / length
|
Ho poca conoscenza in vb.net e non ne vengo a capo, c'è forse qualche limite di download nel codice dell'applicazione? Vi ringrazio dell'aiuto anticipatamente e mi scuso se ho sbagliato in qualche modo a postare.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6384
Iscritto: 03/01/2010
|
Quale errore?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
xsi (Normal User)
Newbie
Messaggi: 19
Iscritto: 07/04/2010
|
Postato originariamente da xsi:
Buongiorno, ieri ero in ricerca di un modo di scaricare file tramite un applicazione che riportasse anche velocità di download, peso del file, progressbar e ulteriori informazioni. Proprio su questo forum ho trovato l'applicazione che riporto in allegato. Apro il progetto su vb 2010 e provo il download di alcuni file (di piccole dimensioni) e rilevo che funziona tutto correttamente. Successivamente ho provato con file di dimensioni maggiori (300mb) e l'applicazione termina il download a circa 20000kb riportandomi come errore sul codice la seguente stringa:
Codice sorgente - presumibilmente C# / VB.NET |
Dim percent As Short = (nRead * 100) / length
|
Ho poca conoscenza in vb.net e non ne vengo a capo, c'è forse qualche limite di download nel codice dell'applicazione? Vi ringrazio dell'aiuto anticipatamente e mi scuso se ho sbagliato in qualche modo a postare. |
Stavo riprovando per averne la certezza ma oggi non riesco a replicarlo, se non erro ieri usciva scritto che era impossibile dividere per zero, purtroppo non posso essere più preciso perchè attualmente si stoppa solo il download
EDIT: ecco l'errore Ultima modifica effettuata da xsi il 19/10/2011 alle 14:08 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6384
Iscritto: 03/01/2010
|
Se l'errore è quello vuol dire che la variabile
length
per qualche motivo, vale zero, e questo ovviamente non è possibile.
Devi controllare che il valore di length sia diverso da zero prima di far continuare il download. Modifica il sorgente introducendo questo controllo.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
xsi (Normal User)
Newbie
Messaggi: 19
Iscritto: 07/04/2010
|
Ho riportato sopra l'errore preciso.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6384
Iscritto: 03/01/2010
|
Quando il programma è in quella riga, controlla il valore delle variabili ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
xsi (Normal User)
Newbie
Messaggi: 19
Iscritto: 07/04/2010
|
Postato originariamente da nessuno:
Quando il programma è in quella riga, controlla il valore delle variabili ... |
Grazie dell'aiuto.
Rileggendo il codice la variabile lenght dovrebbe riportare il peso del file, quello che non capisco è il motivo per cui varia durante il download.
Forse il modo migliore è ripartire da 0 creando una cosa simile così mi rendo conto realmente come funziona...
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6384
Iscritto: 03/01/2010
|
Scusa, ma non hai detto quanto valgono le variabili come ti avevo consigliato di fare ...
Non penso che le variabili cambino valore durante l'esecuzione, probabilmente quella length vale zero sin dall'inizio e dovresti capire il perché ... ovvero dovresti effettuare un controllo subito dopo
Dim length As Long = theResponse.ContentLength 'Size of the response (in bytes)
e informare l'utente che il server non ha restituito la lunghezza del file.
Ultima modifica effettuata da nessuno il 19/10/2011 alle 14:52
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Qwertj (Dev Team)
Guru
Messaggi: 678
Iscritto: 30/05/2011
|
Il problema è di overflow: la variabile lenght è di un tipo troppo piccolo per contenere un numero del genere. Prova a usare un tipo unsigned (siccome lunghezze negative non esistono) e magari bello lungo, tipo UInt64.
Il fatto che dia divisione per zero è che quando una variabile vale ad esempio (in binario)
11111111
E lo spazio riservato per quella variabile è un byte (8 bit), se io aggiungo uno ottengo
100000000
Ma siccome il computer va a prendere solo i primi 8 bit, per lui la variabile è diventata 00000000, cioè zero
|
|