|
|
|
![]() |
|
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: 03:20.