AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datei im Verzeichnis geöffnet/gesperrt?

Ein Thema von bernau · begonnen am 20. Apr 2015 · letzter Beitrag vom 20. Apr 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#1

Datei im Verzeichnis geöffnet/gesperrt?

  Alt 20. Apr 2015, 13:48
Ich möchte testen, ob Dateien in einem Verzeichnis "nicht" von einem anderen Programm gesperrt sind. (z.B. wegen bearbeitung der Datei).

Der einfachste Weg, wäre das Verzeichnis kurzfristig umzubenennen. Ist eine Datei geöffnet, dann kann ich das Verzeichnis nicht umbenennen. Allerdings finde ich diese Methode nicht sehr elegant. Gibt es eine andere Procedure/Funktion die für so etwas geeignet ist?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Datei im Verzeichnis geöffnet/gesperrt?

  Alt 20. Apr 2015, 13:53
Delphi-Quellcode:
function IsFileInUse(FileName: TFileName): Boolean;
var
  HFileRes: HFILE;
begin
  Result := False;
  if not FileExists(FileName) then Exit;
  HFileRes := CreateFile(PChar(FileName),
                         GENERIC_READ or GENERIC_WRITE,
                         0,
                         nil,
                         OPEN_EXISTING,
                         FILE_ATTRIBUTE_NORMAL,
                         0);
  Result := (HFileRes = INVALID_HANDLE_VALUE);
  if not Result then
    CloseHandle(HFileRes);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if IsFileInUse('./test.csv') then
    ShowMessage('In Use');
end;
Quelle:
http://www.swissdelphicenter.com/tor...ode.php?id=104

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#3

AW: Datei im Verzeichnis geöffnet/gesperrt?

  Alt 20. Apr 2015, 14:04
Habe mich vieleicht nicht wirklich wirklich gut ausgedrückt.

Das Verzeichnis hat ggf. mehrere hundert Dateien oder auch Verzeichnisse, in dem Verzeichnis geöffnet sind.

Ich wollte es vermeiden, alle Dateien einzeln zu testen.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Datei im Verzeichnis geöffnet/gesperrt?

  Alt 20. Apr 2015, 14:08
Die Frage ist, was du eigentlich machen möchtest, bzw. warum es interessant ist, ob die Datei (oder eine von vielen) gerade verwendet wird oder nicht.

Danach richtet sich dann die Vorgehensweise ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#5

AW: Datei im Verzeichnis geöffnet/gesperrt?

  Alt 20. Apr 2015, 15:03
Für ein Updateprozess muss ich Daten aus diesem Verzeichnis sichern, Dateien aktualisieren und sonst noch so zwei drei Sachen machen.

Damit brauche ich erst gar nicht anzufangen, wenn in dem Verzeichnis noch irgendetwas geöffnet ist.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Datei im Verzeichnis geöffnet/gesperrt?

  Alt 20. Apr 2015, 15:06
Dann ist es wahrscheinlich trotzdem nicht schlecht versuchen den Order umzubenennen.

Wenn du einzelne Dateien überprüfen müsstest könnte man einfach bei der 1000. Datei einfach wieder die 1. aufmachen und die ganze Prüfung ist für nichts zu gebrauchen ^^

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Datei im Verzeichnis geöffnet/gesperrt?

  Alt 20. Apr 2015, 15:16
Ich würde die Dateien einfach der Reihe nach auf machen und für jede Datei die nicht zu öffnen ist kriegt der Benutzer einen "Wiederholen / Abbrechen"-Dialog.

Und am Schluss die Dateien natürlich wieder zu machen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Datei im Verzeichnis geöffnet/gesperrt?

  Alt 20. Apr 2015, 15:18
Und wenn man nun die Datei erst öffnet, nachdem du geprüft hast?

Wenn es unbedingt nötigt ist, dann erstell eine Transaktion.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Datei im Verzeichnis geöffnet/gesperrt?

  Alt 20. Apr 2015, 15:19
Für ein Updateprozess muss ich Daten aus diesem Verzeichnis sichern, Dateien aktualisieren und sonst noch so zwei drei Sachen machen.

Damit brauche ich erst gar nicht anzufangen, wenn in dem Verzeichnis noch irgendetwas geöffnet ist.
Kannst du denn gewährleisten, dass alle geöffneten Dateien auch wirklich "korrekt" gesperrt sind, also z.B. die Flags fmShareExclusive ,fmShareDenyWrite , ... verwenden? Sonst bringt das nix.

Wenn diese Zugriffe alle korrekt gehandhabt werden, dann kannst du auf alle Dateien so einen Zugriff machen mit fmShareExclusive und wenn du für alle Dateien diesen Zugriff erhalten hast, dann kannst du mit der Arbeit loslegen. Ansonsten gibts du den Zugriff wieder frei und versuchst es später erneut.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#10

AW: Datei im Verzeichnis geöffnet/gesperrt?

  Alt 20. Apr 2015, 15:50
Ich kann natürlich nicht sicherstellen, ob die Dateien korrekt gesperrt sind.

Aber erst mal wollte ich auf die schnelle testen, ob noch Dateien geöffnet sind. Das mit dem Verzeichnis umbenennen war nur so eine Idee. Nicht wirklich gut.

Dann muss ich wohl doch mal jede Datei testen. Schade. Dachte es gibt eine einfach "schnelle" Möglichkeit.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:31 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