Delphi: Kopieren von Dateien aus dem Ordner mit den Gesamten Fortschritt. CopyFileEx?
Habe ich festgestellt, Beispiele von CopyFileEx, mit dem Fortschritt, aber ich brauche, um kopieren Sie einige Dateien aus einem Ordner mit insgesamt Fortschritte erzielt.
Kann jemand bieten Infos, wie Sie dies tun? Oder gibt es gute alternativen (Komponente, Funktion)?
Großen Dank für die Hilfe!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ich hatte eine Antwort - aber ich hab nur gerade um zu Graben es aus 🙁 Aber hier ist es sowieso, ich schrieb das vor ein paar Jahren als Teil eines Programms, das aufgerufen wurde "CopyFilesAndFailGraceFully.exe" 🙂 ich habe modded es ein bisschen zu entgehen, den recovery-Kram, Griffe versagende Festplatten, wenn Sie es können - also NICHT VOLL GETESTET, aber laufen wie ein einfacher test.
Können Sie aufrufen, bekommen Sie eine rekursive filecount, Dateigröße oder Kopieren Sie die Dateien in einem Ordner in einen neuen Ordner. Oder eine Mod für Ihre eigene situation 🙂 wie auch immer sein ein Beispiel für das, was Sie brauchen.
Seine ein Objekt (Wie Sie sehen), es zu benutzen (in etwa):
Brauchen Sie ein paar vars entsprechend benannt.
Erklären Sie Ihre callback:
und Umsetzung:
Dann rufen Sie Sie nach Bedarf 🙂 z.B.:
Hier ist meine Lösung ohne WinApi.
Erste, ein Verfahren zum kopieren einer Datei:
Nun, um Dateien aus dem Verzeichnis und Berechnung Ihrer gesamten Größe für den Fortschritt.
Bitte beachten Sie, dass das Verfahren erfordert eine Instanz von TStringList-Objekt-Klasse, wo werden gespeicherte Datei Pfade.
Und schließlich die Nutzung Beispiel:
Experimentiere mit der Puffergröße meine Leistung zu verbessern. Allerdings ist es ziemlich schnell so wie es jetzt ist. Vielleicht sogar schneller als das kopieren mit diesem aufgeblähten Vista/Win 7 Dialoge.
Auch dies ist eine schnelle Lösung, die ich schrieb vor einigen Jahren für andere forum, es könnten enthalten einige Fehler. Also Benutzung auf eigene Gefahr 😉
CopyFileEx
.Hinzufügen, bis die Größe der Datei für alle Dateien, bevor Sie beginnen. Dann können Sie manuell konvertieren Sie die Fortschritte für jede einzelne Datei in einen Allgemeinen Fortschritt.
Oder verwenden Sie
SHFileOperation
und erhalten die native OS-Datei-kopieren-Fortschritts-Dialoge.GetFileAttributesEx
. Wenn Sie im Voraus wissen, dass alle Dateien mit ähnlicher Größe, dann könnten Sie überspringen diesen Teil und geben Sie jeder Datei einen gleichen Anteil von den 100% Fortschritt.Die beste Lösung für mich (zu kopieren 20 MB und nicht oft) ist die Verwendung von CopyFileEx in einer lite-version. Ein Ziel meiner weiche nicht kopieren.