Prüfen ob Datei von einem anderen Prozess verwendet wird
Hallo,
ich hab ein Programm zum Kopieren von Dateien. Jetzt kann es aber sein, dass eine Datei gerade benutzt wird. Dann kann ich Diese nicht kopieren. Ich hab mir mal zu diesem Zeitpunkt den Systemfehler ausgelesen und ich erhalte folgenden Hinweis: Zitat:
verwendet wird? |
re: Prüfen ob Datei von einem anderen Prozess verwendet wird
Zitat:
Aber diese Prüfung ist grundsätzlich dumm (ungeschickt). Denn was nützt es, wenn die Prüfung ergibt, dass die Datei frei ist und genau in diesem Augenblick ein anderer Prozess kommt und die Datei öffnet. Dann möchtest du die Datei kopieren -> Fehler. Was ich damit sagen möchte: vergiss die Idee zu prüfen, kopier einfach die Datei und wenn es einen Fehler gibt, reagiere darauf. Du kannst z.B. dem Benutzer fragen
Code:
Datei xy kann nicht kopiert werden.
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird Abbrechen | Wiederholen | Ignorieren |
re: Prüfen ob Datei von einem anderen Prozess verwendet wird
Sonst gibt es noch diese Methode:
http://www.delphi-treff.de/tipps/dat...isse/tipp/265/ |
re: Prüfen ob Datei von einem anderen Prozess verwendet wird
Sollte durch das ändern des FileModes in einem Stream funktionieren. Etwa so:
Delphi-Quellcode:
Ob diese Methode aber sicher ist, weiß ich nicht. Die FileModes findest du ganz oben in der SysUtils.
var
Stream: TFileStream; SRC: String; begin SRC := 'C:\DeineDatei.txt'; Stream := TFileStream.Create(SRC, fmShareDenyNone); {Irgendetwas damit tun - z.B. in eine Stringliste laden - über LoadFromStream} Stream.Free; end; //Edit: Tippfehler |
re: Prüfen ob Datei von einem anderen Prozess verwendet wird
Hallo,
danke für eure Hilfe. Das Kopieren wird in einem try-except-block durchgeführt. Wenn jetzt eine Datei unkopierbar ist, weil sie von einem Prozess momentan verwendet wird, dann lauf ich in den except-teil und ich zeig eine Fehlermeldung an. Also ich werte einen Fehler schon aus - nur hab ich mir halt gedacht, es wäre schöner, wenn ich zuvor schon prüfen könnte ob ich die Datei überhaupt kopieren kann. |
re: Prüfen ob Datei von einem anderen Prozess verwendet wird
http://www.delphipraxis.net/internal...=732355#732355
oder über die DP-Suchfunktion: z.B.: isFileInUse, isFileOpen oder [dp]Datei geöffnet[/dp] Aber wenn du genau nachließt, dann wirst du merken, daß es keinen einfachen und sicheren Weg gibt, um sowas zu prüfen. Also um eine Fehlerprüfung wirst so oder so du nicht umherkommen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz