Entwickler-Ecke
Dateizugriff - Deiteizugriff nach CopyFile
Delete - Sa 24.07.04 13:28
Titel: Deiteizugriff nach CopyFile
Hi!
Kurze Fräge: Wenn ich eine datei mit Copyfile bewege, dann bleibt sie irgendwie immer noch bis zum Beenden meines Programmes gesperrt, kann also von außen nicht gelöscht werden (->"Datei wird von einem anderen Benutzer/Programm verwendet").
Kann ich Windows irgendwie verständlich machen, dass ich die Datei wirklich nur kopieren wollte und jetzt nichts mehr damit zu tun haben will?
Delete - Sa 24.07.04 14:00
Rein pauschal würde ich tippen, dass du die Datei nicht geschlossen hast. Nachdem du dies mit
Delphi-Quelltext
1:
| CloseFile(DeineDatei); |
getan hast, solltest du sie in Windows wieder normal verwenden können.
Delete - Sa 24.07.04 14:17
CloseFile ist ja für die Verwendung mit Dateivariablen gedacht.
Copyfile ist aber ein API-Befehlfunction CopyFile(lpExistingFileName, lpNewFileName: PChar; bFailIfExists: BOOL): BOOL;der direkt zwei Pfade als Parameter nimmt. Eine File-Variable oder ein Handle zum Schließen habe ich ja dadurch gar nicht erst.
BenBE - So 25.07.04 05:09
Dann mach's doch einfach mit Streams:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure CopyFile(Src, Dest:String); var SourceFile, DestFile:TFileStream; begin DestFile := TFileStream.Create(Dest, fmCreate); try SourceFile := TFileStream.Create(Src, fmOpenRead or fmShareDenyWrite); try DestFile.CopyFrom(SourceFile, 0); finally SourceFile.Free; end; finally DestFile.Free; end; end; |
Wenn du eine Function brauchst, einfach ne Try-Except rund rum und im Except-Teil Result auf False, ansonsten als letzt Anweisung vor dem except auf True setzen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!