|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 16
|
[VB] ProgressBar
Salve a tutti. Premetto che sono un principiante nel campo dello sviluppo questo è il codice che ho compilato (variando solo sorgente e destinazione della copia): Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click FileCopy("E:\boxE\doc1.doc", "C:\boxC\doc1.doc") Timer1.Start() End Sub Public Sub FileCopy(ByVal strSourcePath As String, ByVal strDestinationPath As String) Dim fso As Object Dim fil As Object fso = CreateObject("Scripting.FileSystemObject") fil = fso.getfile(strSourcePath) fil.Copy(strDestinationPath) fil = Nothing fso = Nothing End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click End Sub Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgressBar1.Click End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick ProgressBar1.Increment(1) If ProgressBar1.Value = ProgressBar1.Maximum Then End If End Sub End Class ________________________________ Grazie per l'eventuale aiuto. R.P. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 404
|
Quote:
per far si che la progressbar segue esattamente la copia dei file devi usare la copia tramite il buffer in modo che sai perfettamente i byte che stai trasferendo..non so se sono stato chiaro se hai qualche problema scrivi pure |
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 16
|
ProgressBar in VB
Il concetto è abbastanza chiaro, ma visto che sono un po "imbranato" ed è la prima applicazione utile che creo, per tradurlo in codice dove e cosa dovrei scrivere?
Vi ringrazio per la "comprensione". R.P. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 404
|
Quote:
Crei una nuova procedura di copia invece di usare quella nel framework. In questo modo hai la possibilità di sapere ogni volta che scrivi sul nuovo file quanto hai scritto e sommarlo a quanto avevi già scritto in precedenza (un semplice somma ad ogni ciclo) in questo modo: mentre file_lettura.non_è_alla_fine file_lettura.leggi_su_buffer file_scrittura.scrivi_da_buffer incrementa_progressbar(bytes_scritti) fine mentre Ovviamente prima e dopo ci vanno tutte le dichiarazioni e le inizializzazioni del caso... però voglio aiutarti e ti posto un pò di codice: Codice:
Dim input As New System.IO.FileStream (Origine,IO.FileMode.Open,IO.FileAccess.Read)
'Crea il FileStream su cui scrivere i dati
Dim output As New FileStream(Destinazione & "\" & IO.Path.GetFileName(TextBox1.Text), FileMode.Create, FileAccess.Write)
'Crea un buffer temporaneo per il passaggio dei blocchi di dati (1 MB)
Dim bufSize As Integer = 1024 * 1024
Dim tmpBuf(bufSize) As Byte
'Imposta il valore massimo della ProgressBar sul numero di blocchi da copiare
Dim numBlocks As Integer = (input.Length + bufSize - 1) / bufSize
ProgressBar1.Maximum = numBlocks
ProgressBar1.Minimum = 0
ProgressBar1.Value = 0
'Il numero di byte letti per il blocco
Dim read As Integer = input.Read(tmpBuf, 0, bufSize)
While (read > 0)
'Copia il blocco dal buffer nel file di output
output.Write(tmpBuf, 0, read)
'Incrementa di uno il valore della ProgressBar
ProgressBar1.Value += 1
'Esegue gli eventi
Application.DoEvents()
'Legge un blocco di dati nel buffer
read = input.Read(tmpBuf, 0, bufSize)
End While
ProgressBar1.Value = numBlocks
'Chiude gli Stream dei file
input.Close()
output.Close()
|
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 16
|
Grazie, sei stato più che esaustivo. Oggi mi metto all'opera e vediamo cosa riesco a combinare.
Grazie ancora e buon WE |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Codice:
Try
My.Computer.Network.DownloadFile(nomeFileIn, nomeFileOut, nomeUser, userPwd, True, connTimeOut, sovraScrivi, FileIO.UICancelOption.ThrowException)
Catch ex As Exception
My.Computer.FileSystem.DeleteFile(nomeFileOut)
End Try
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:07.




















