Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Download di un file da ftp - progress bar

Dato che attraverso vb6 non č possibile fare il download di un file
attraverso ftp, facendo nel contempo vedere una progress-bar, mi stavo
chiedendo se esiste qualche componente/ocx/dll che fa questo lavoro.
Freeware o shareware, non ha importanza.....
oppure, rilancio il mio problema.
Adesso faccio il download del mio file usando il .Execute dell'Inet.
Il nome del file locale durante il download č sempre "FileTemp.bin"; quando
il download č completo, lo rinomino con il suo nome reale.
Durante il download, vedo FileTemp.bin crescere di dimensioni (4Kb, 10Kb,
16Kb, e cosě via....fino a raggiungere la dimensione effettiva del file).
Quello che vorrei fare io č visualizzare una delle seguenti due cose:
1) una progress-bar che mostri quanto manca alla fine del download (piů
complicato, perchč bisogna anche sapere la dimensione totale del file)
2) una semplice label che mostri il numero di Kb scaricati, giusto per far
capire che c'č un download in corso.....
qualche aiuto o consiglio?
good coding!!!
-- 
Alletun
Sorry, ask me if you want to get my e-mail!

 good coding!!!
.Execute è asincrono, se non mi sbaglio, per cui hai degli eventi che ti
aggiornano sulla quantità ricevuta.
Se prima del Get esegui un LS (o List o Dir non ricordo), e fai un mini
parsing di ciò che ricevi, ottieni una indicazione molto precisa della
dimensione del file. A questo punto, aggiornare una progressbar non mi
sembra complesso.
Ciao
Alberto

 sembra complesso.
allora, purtroppo adesso non ho sottomano il codice, per cui non riesco a
postarlo, anche se mi sarebbe piaciuto. Sai qual'è il fatto? mi sfugge la
logica.....
come hai detto tu, il .Execute è asincrono. L'unico evento dell'Inet è
StateChanged, con un parametro in ingresso (mi pare State), che quando vale
12 vuol dire che il file è arrivato completamente.
Il codice che ho inserito nel mio progetto fa la GetChunk SOLO quando State
= 12, quindi sembra quasi che sia l'unica occasione per fare la Open e la
Close del file ricevuto.
potrei gestire quando State <> 12, ma come faccio a sapere quanti bytes ho
ricevuto?


 bytes ho ricevuto?
Neanche io ho sottomano il codice.
Non vorrei averti detto una cavolata. Prova a mettere un debug.print
cstr(state) all'ingresso dello statechanged, e verifica se per caso non
avviene anche durante il download e che stato riporta.
Poi con F2 vai a vedere l'enumerazione degli stati Inet, ed eventualmente
prova a fare dei GetChunk anche quando lo state non è 12, scrivendo su file
in append anzichè aprendo ex-novo (ovviamente va vuotato all'inizio).
Se tu facessi un get su http, ci sarebbero anche altre modalità con cui
potrei aiutarti, ma dovendo usare il get di ftp non so altro che Inet.
Ciao
Alberto

 potrei aiutarti, ma dovendo usare il get di ftp non so altro che Inet.
proponi, se ne sai di più. L'ftp non è obbligatorio, anzi.....cosa potrei
fare con http?
ne sai di più?
grazie, scusa il disturbo and good coding!!!


 sbaglio?
si ma tu hai il tuo file bin ?
quindi hai fatto una LS e sai che il file e' di 1024Kb
il tuo bin temporaneo e' a 300Kb
quindi la tua progress bar visualizzera :
X : 100 = 300 : 1024
X = int(30000/1024) = 29%
ho centrato il punto ?
-- 
-Gigio@Work(?)-

 good coding!!!
Non lo ho provato, ma hai visto questo:
http://www.vbip.com/protocols/ftp/vb-ftp-client-library/tutorials/tutorial-04.asp
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 ho centrato il punto ?
sì, ci ho pensato anche io, ma evidentemente il file bin è in uso, quindi
usando la FileLen non riesco a leggere la dimensioni temporanea del file,
quindi c'è quest'altro problema......



http://www.vbip.com/protocols/ftp/vb-ftp-client-library/tutorials/tutorial-04.asp
vuoi sapere una cosa?
SEMBRA ECCEZIONALE!!!
finalmente una serie di classi intelligenti, porca miseria!!! dov'eri una
settimana fa, quando ho postato questa identica domanda? ci ho sbattuto la
testa per tutto il weekend, con scarsi risultati.....
dai, un giorno contraccambierò, anzi, ti faccio sapere se funziona, adesso
non ho nè tempo nè modo di farlo.....
grazie, good coding!!!


 non ho nè tempo nè modo di farlo.....
Non postai perche' ero certo che tu conoscessi quel sito e quindi ho 
pensato che ti servisse qualcosa di "particolare" che la' non c'e'...
La prossima volta ti trattero' come l'ultimo dei newbie! ;-)


 La prossima volta ti trattero' come l'ultimo dei newbie! ;-)
buuhh....
:-(((
hai ragione, non si finisce mai di imparare, come al solito.....
grazie per avermelo detto oggi, comunque, la prossima volta non dare niente
per scontato e dimmelo subito!!!!
:-pp
a parte tutto, grazie veramente.....


 good coding!!!
usa qualche api sotto SH e leggilo in share !
-- 
-Gigio@Work(?)-

 sbaglio?
Ho letto che hai trovato di meglio, quindi proseguo per pura accademia.
L'execute dell'Inet non scrive su file. Sei tu che fai dei getchunk e scrivi
su file.
Quindi, quando hai un qualunque evento (tranne errori), puoi sempre fare un
getchunk e andare a scrivere su file.
In sostanza, anzichè aspettare lo state 12 e poi fare un loop di getchunk
per popolare il file, esegui questa cosa un po' alla volta (diciamo un chunk
ad ogni evento, per esempio).
Ad ogni getchunk, ti ritorna la dimensione effettiva di quel chunk (che
potrebbe appunto essere incompleto), per cui con una semplice variabile long
tu puoi archiviare la totalità ricevuta fino a quel momento.
Se prima hai fatto un LS e quindi sai la dimensione complessiva, hai il
parziale e il totale, e puoi aggiornare la progressbar.
Ciao
Alberto