Rubrik: Dateisystem · Dateien allgemein | VB-Versionen: VB4, VB5, VB6 | 24.05.05 |
Restzeit für Dateioperationen ermitteln Hier wird gezeigt, wie sich die verbleibende Restzeit beim Kopieren/Verschieben oder Löschen von Dateien ermittelt lässt. | ||
Autor: Marcus Woida | Bewertung: | Views: 15.961 |
www.mawosoft.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Verschiebt oder kopiert man im Windows-Explorer mehrere Dateien, zeigt ein Dialog den Fortschritt und die verbleibende Zeit.
Mit dem Tip Kopieren, Verschieben, Löschen wie im Explorer kann man in VB diese Dialoge nutzen.
Was aber, wenn man aus bestimmten Gründen diese Dialoge nicht nutzen kann (oder möchte), aber trotzdem die verbleibende Zeit benötigt? Hier hilft der von vielen geliebte Dreisatz.
Benötigt wird:
- die Anzahl aller Dateien
- die Zeit, die für die bereits kopierten Dateien benötigt wurde
- die Anzahl der Dateien, die noch kopiert werden müssen
Die im folgenden vogestellte Funktion TimeRemain benötigt:
- die Anzahl aller Dateien
- die Zeit, wann mit der Operation begonnen wurde
- die Anzahl der bereits kopierten Dateien
Daraus wird zunächst die Zeit, die für eine Dateioperation benötigt wurde ermittelt. Dieser Wert wird dann auf die noch übrig gebliebenen Dateien hochgerechnet.
In der Praxis sieht das so aus:
' Für das Beispiel sei angenommen, dass Dateien kopiert werden sollen ' und die zu kopierenden Dateien im Array arrFiles() liegen. Private Sub cmdCopy_Click() Dim Start As Single Dim Dateien As Long Dim i As Long ' Startzeit festlegen Start = Timer ' Anzahl der zu kopierenden Dateien bestimmen ' (da das Array bei 0 (Null) beginnt, ist die Anzahl der Dateien der ' obere Index des Arrays + 1) Dateien = UBound(arrFiles) + 1 For i = LBound(arrFiles) To UBound(arrFiles) ' Datei kopieren FileCopy "C:\temp\" & arrFiles(i), "C:\Temp1\" & arrFiles(i) ' Restzeit anzeigen ' (da das Array bei 0 (Null) beginnt, ist die Anzahl der bereits ' kopierten Dateien i + 1) Label1.Caption = "Verbleibende Zeit: " & TimeRemain(Start, Dateien, i + 1) & " Sekunden" Next i End Sub
Private Function TimeRemain(Start As Single, Dateien As Long, _ Kopiert As Long) As Long Dim Vergangen As Single Dim Rest As Long Dim Tmp As Double ' Start: Zeit, wann mit der Operation begonnen wurde ' Dateien: Anzahl aller Dateien ' Kopiert: Anzahl der bereits kopierten Dateien ' Vergangen: Zeit, die seit dem Start der Operation verstrichen ist ' Rest: Zeit, die für die restlichen Dateien benötigt wird ' Tmp: Zeit, die für eine Datei benötigt wurde (Durchschnitt) ' Zeit, die seit dem Start der Operation verstrichen ist Vergangen = Timer - Start ' Zeit, die für eine Datei benötigt wird (Durchschnitt) Tmp = Vergangen / Kopiert ' Zeit, die für die restlichen Dateien benötigt wird ' restliche Dateien = Dateien - Kopiert Rest = (Dateien - Kopiert) * Tmp TimeRemain = Rest End Function