31/03/08 14:51
Il Totem
L'unico modo possibile consiste nel calcolare a priori la dimensione della cartella da ispezionare, quindi tenere una variabile contatore che indichi la dimensione dei file controllati, aggiungendone uno ad ogni controllo. La percentuale la trovi con una proporzione tra il contatore e la dimensione totale.
aaa
02/04/08 17:26
Il Totem
Postato originariamente da Dark_Limit:
sizefile=microsoft.VisualBasic.FileLen(File)
contat+=1
contat= (contat/sizefile)
index += 1
Label6.Text = "Progresso: " & (index * 100 / contat) & "%"
Application.DoEvents()
Non capisco che significato abbia questo codice. Per ora lascia stare la dimensione: basta contare anche solo il numero di file presenti. Poi ti faccio notare che, essende SizeFile sempre maggiore di 2 (non credo che tu abbia un eseguibile di meno di 2 bytes), ed essendo contat INTEGER e non Single, il risultato 1 / SizeFile viene sempre approssimato a 0. Quindi una divisione per 0 dà come risultato inifito. D'altronde non ha alcun senso dividere contat per SizeFile... a cosa servirebbe? Inoltre ti ho detto che una procedura deve calcolare la grandezza della cartella e un'altra controllare i files. Tu stai facendo tutto in una.
Public Function GetFileNumber(ByVal Dir As String) As Int32
Dim Result As Int32
For Each SubDir As String In IO.Directory.getDirectories(Dir)
Result += GetFileNumber(SubDir)
Next
For Each File As String In IO.Directory.GetFiles(Dir)
Result += 1
Next
Return Result
End Function
...
Dim AllFiles As Int32
Dim Index As Int32
Public Function GetExeFile(ByVal Dir As String, ByVal IsMain As Boolean) As List(Of String)
If IfMain Then AllFiles = GetFileNumber(Dir)
Index = 0
Dim Result As New List(Of String)
For Each SubDir As String In IO.Directory.getDirectories(Dir)
Result.AddRange(GetExeFiles(SubDir, False))
Next
For Each File As String In IO.Directory.GetFiles(Dir)
Result.Add(File)
Label1.Text = "Percentuale: " & Index*100/AllFiles & "%"
Application.DoEvents()
Next
Return Result
End Function
P.S.: scritto senza compilatore... possibili errori in vista...
Ultima modifica effettuata da Il Totem 02/04/08 17:27
aaa
13/04/08 7:06
Il Totem
Ma te l'ho scritto tutto io! Basta che ci aggiungi la riga che imposta il valore della progressbar, proprio sotto al cambiamento di testo della label.
aaa