![]() |
Problem bei Datei kopieren. SHFileOperation, CopyFile,...
Hi Leute,
ich versuche schon seit einer Weile ein Programm zu schreiben, welches ein Backup von Benutzerdaten erstellt. Eigentlich ein recht triviales Problem. Nutze ich die SHFileOperation-Funktion bzw die ![]() Hier der Quelltext für dir Streams:
Delphi-Quellcode:
Werden Die Dateien mittels Windows von Hand kopiert, funktioniert das Kopieren fehlerlos.function ThreadCopy.CopyFile(Source, Dest: String): Boolean; var F, T: TFileStream; begin try Result := true; try F := TFileStream.Create(Source, fmOpenRead); T := TFileStream.Create(Dest, fmOpenWrite); T.CopyFrom(F, 0); finally F.Destroy; T.Destroy; end; except Result := false; end; end; Alle zu kopierenden Dateien sind geschlossen ! kann man das irgendwie einrichtren dass alle Dateien kopiert werden? Gruß Manuel |
Re: Problem bei Datei kopieren. SHFileOperation, CopyFile,..
Hallo...
hat denn keiner eine Idee? :( Gruß Manuel |
Re: Problem bei Datei kopieren. SHFileOperation, CopyFile,..
Beim Kopieren von Dateien muss man auf die Share-Attribute achten.
Du behauptest zwar, die Dateien wären alle geschlossen, aber das ist noch kein Beweis. Beim Kopieren solltest du eventuelle Fehler mit protokollieren!! Deshalb:
Delphi-Quellcode:
ThreadCopy = class(TThread)
private ... FErrors : string; // speichert die Kopierfehler public ... property Errors : string read FErrors; end; function ThreadCopy.CopyFile(const Source, Dest: String): Boolean; var F, T: TFileStream; begin Result := false; try try F := TFileStream.Create(Source, fmOpenRead and fmShareDenyNone); T := TFileStream.Create(Dest, fmCreate); T.CopyFrom(F, 0); Result := true; finally F.Destroy; T.Destroy; end; except on E:Exception do begin // wir merken uns die Fehlermeldung aus der Exception // und die Dateinamen, die kopiert werden sollten !!! FErrors := FErrors+Source+'->'+Dest+' : '+E.Message+#13#10; end; end; end; |
Re: Problem bei Datei kopieren. SHFileOperation, CopyFile,..
Hab den Fehler gefunden...
Hab mich bei der Zusammensetzung des Pfades vertippt :wall: Muss passiert sein, als ich auf Threads umgestellt habe... Trotzdem Danke an Shmia. Die Prozedur werde ich entsprechend umbauen... Manuel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz