AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Prüfen ob Datei von einem anderen Prozess verwendet wird

Prüfen ob Datei von einem anderen Prozess verwendet wird

Ein Thema von Helmi · begonnen am 31. Mär 2008 · letzter Beitrag vom 24. Apr 2008
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Prüfen ob Datei von einem anderen Prozess verwendet wird

  Alt 31. Mär 2008, 16:05
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:
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird
Wie kann ich zuvor prüfen, ob die Datei von einem anderen Prozess
verwendet wird?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

re: Prüfen ob Datei von einem anderen Prozess verwendet wird

  Alt 31. Mär 2008, 16:15
Zitat von Helmi:
Wie kann ich zuvor prüfen, ob die Datei von einem anderen Prozess
verwendet wird?
Du kannst das prüfen, in dem du die Datei exklusiv öffnest. Sollte das misslingen, könnte ein anderer Prozess die Datei geöffnet haben.
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
Andreas
  Mit Zitat antworten Zitat
Jeopardize

Registriert seit: 20. Mär 2007
Ort: Villach
65 Beiträge
 
Turbo Delphi für .NET
 
#3

re: Prüfen ob Datei von einem anderen Prozess verwendet wird

  Alt 31. Mär 2008, 16:34
Sonst gibt es noch diese Methode:
http://www.delphi-treff.de/tipps/dat...isse/tipp/265/
  Mit Zitat antworten Zitat
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#4

re: Prüfen ob Datei von einem anderen Prozess verwendet wird

  Alt 31. Mär 2008, 16:35
Sollte durch das ändern des FileModes in einem Stream funktionieren. Etwa so:
Delphi-Quellcode:
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;
Ob diese Methode aber sicher ist, weiß ich nicht. Die FileModes findest du ganz oben in der SysUtils.

//Edit: Tippfehler
Frank Dumont
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

re: Prüfen ob Datei von einem anderen Prozess verwendet wird

  Alt 31. Mär 2008, 17:03
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.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.100 Beiträge
 
Delphi 12 Athens
 
#6

re: Prüfen ob Datei von einem anderen Prozess verwendet wird

  Alt 24. Apr 2008, 14:59
http://www.delphipraxis.net/internal...=732355#732355

oder über die DP-Suchfunktion: z.B.: Hier im Forum suchenisFileInUse, Hier im Forum suchenisFileOpen oder Hier im Forum suchenDatei geöffnet

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 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