Suggerisco un'attenta lettura della Guida in linea.
Ho creato una piccola applicazione in 5 minuti facendo così:
ho inserito un componente TIdHttp sul form principale, più un pulsante per avviare il download del file.
Per effettuare il download, ho scritto questo brevissimo codice.
Il codice utilizza il metodo Get passando come parametro l'indirizzo del file da ricevere e un'istanza di TMemoryStream per copiare in memoria i dati ricevuti. Successivamente, con il metodo SaveToFile si provvede a salvare su disco il file ricevuto. Ora passiamo alla parte dello "stato del lavoro".codice:procedure TForm1.Button1Click(Sender: TObject); var MS: TMemoryStream; begin MS := TMemoryStream.Create; try IdHTTP1.Get('http://www.abls.it/filename.txt', MS); MS.SaveToFile('C:\filename.txt'); finally MS.Free; end; end;
Come avevo suggerito, gli eventi da intercettare sono OnWorkBegin e OnWork (l'evento OnWorkEnd si può utilizzare per segnalare il completamento del download, ad esempio).
Questo è il codice dell'evento OnWorkBegin.
Il valore massimo della ProgressBar viene inizializzato con il massimo valore assunto da WorkCount, che esprime il numero di byte scaricati e viene restituito dall'evento OnWork:codice:procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin ProgressBar1.Max := AWorkCountMax; end;
Nell'evento, durante il download, aggiorniamo lo stato della ProgressBar assegnando a Position il valore di AWorkCount.codice:procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin ProgressBar1.Position := AWorkCount; end;
Il gioco è fatto...


Rispondi quotando