Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.net 2010] Errore di download in caso di file più grandi di 20mb
Forum - C# / VB.NET - [VB.net 2010] Errore di download in caso di file più grandi di 20mb

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
xsi (Normal User)
Newbie


Messaggi: 19
Iscritto: 07/04/2010

Segnala al moderatore
Postato alle 13:43
Mercoledì, 19/10/2011
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

  1. 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.


xsi ha allegato un file: SimpleDownloadFile_Source.zip (12862 bytes)
Clicca qui per scaricare il file
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6384
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:01
Mercoledì, 19/10/2011
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à.
PM Quote
Avatar
xsi (Normal User)
Newbie


Messaggi: 19
Iscritto: 07/04/2010

Segnala al moderatore
Postato alle 14:03
Mercoledì, 19/10/2011
Testo quotato

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

  1. 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


xsi ha allegato un file: Errore.PNG (55395 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da xsi il 19/10/2011 alle 14:08
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6384
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:07
Mercoledì, 19/10/2011
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à.
PM Quote
Avatar
xsi (Normal User)
Newbie


Messaggi: 19
Iscritto: 07/04/2010

Segnala al moderatore
Postato alle 14:09
Mercoledì, 19/10/2011
Ho riportato sopra l'errore preciso.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6384
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:26
Mercoledì, 19/10/2011
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à.
PM Quote
Avatar
xsi (Normal User)
Newbie


Messaggi: 19
Iscritto: 07/04/2010

Segnala al moderatore
Postato alle 14:38
Mercoledì, 19/10/2011
Testo quotato

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...


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6384
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:50
Mercoledì, 19/10/2011
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à.
PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 20:07
Mercoledì, 19/10/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

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo