AGB  ·  Datenschutz  ·  Impressum  







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

IsFileInUse ergibt immer "false"

Ein Thema von Maya · begonnen am 24. Sep 2012 · letzter Beitrag vom 25. Sep 2012
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#1

AW: IsFileInUse ergibt immer "false"

  Alt 24. Sep 2012, 12:52
Dann check doch mal, ob du jetzt nicht generell bei dem FileExists schon rausfliegst. Eventuell hast du noch ein Problem beim Dateinamen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#2

AW: IsFileInUse ergibt immer "false"

  Alt 24. Sep 2012, 12:55
Eventuell hast du noch ein Problem beim Dateinamen.
Das sollte sich mit dem Debugger schnell herausfinden lassen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: IsFileInUse ergibt immer "false"

  Alt 24. Sep 2012, 12:57
Dann check doch mal, ob du jetzt nicht generell bei dem FileExists schon rausfliegst. Eventuell hast du noch ein Problem beim Dateinamen.
Bei einer Datei, die ich NICHT aufhabe, beendet er die Funktion beim FileExists und gibt "false" zurück. Bei der Datei, die ich geöffnet habe in Excel, geht er ganz normal weiter in der Funktion und gibt ebenfalls "false" zurück.
Status:
- FIAE
- Rechteinhaberin, ein Rüsselmops sein zu wollen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#4

AW: IsFileInUse ergibt immer "false"

  Alt 24. Sep 2012, 13:04
Hast Du Dir aDateiname einmal im Debugger angesehen? FileExists sollte ja theoretisch dasselbe zurückgeben, egal ob die Datei gerade geöffnet ist oder nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: IsFileInUse ergibt immer "false"

  Alt 24. Sep 2012, 13:14
Hast Du Dir aDateiname einmal im Debugger angesehen? FileExists sollte ja theoretisch dasselbe zurückgeben, egal ob die Datei gerade geöffnet ist oder nicht.
Bingo! Ich habe nicht die richtige Variable übergeben vom Dateinnamen. Danke dir!
Status:
- FIAE
- Rechteinhaberin, ein Rüsselmops sein zu wollen
  Mit Zitat antworten Zitat
shmia

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

AW: IsFileInUse ergibt immer "false"

  Alt 24. Sep 2012, 14:12
Eigentlich müsste die Funktion IsFileInUse() ein dreiwertiges Ergebnis zurückliefern:
Code:
0=Datei vorhanden und nicht benützt
1=Datei vorhanden aber im Zugriff durch einen Prozess
2=Datei nicht vorhanden
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: IsFileInUse ergibt immer "false"

  Alt 24. Sep 2012, 16:46
Eigentlich müsste die Funktion IsFileInUse() ein dreiwertiges Ergebnis zurückliefern:
Code:
0=Datei vorhanden und nicht benützt
1=Datei vorhanden aber im Zugriff durch einen Prozess
2=Datei nicht vorhanden
oder

False=Datei vorhanden und nicht benützt
True=Datei vorhanden aber im Zugriff durch einen Prozess
Exception=Datei nicht vorhanden

Aber man darf den Funktionsnamen nicht für bare Münze nehmen, denn dieses erkennt nicht alle Zugriffe (mindestens 0.000...1% werden nicht, da nicht alle Zugriffe über ein FileHandle arbeiten)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (24. Sep 2012 um 17:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: IsFileInUse ergibt immer "false"

  Alt 25. Sep 2012, 05:09
Aber man darf den Funktionsnamen nicht für bare Münze nehmen, denn dieses erkennt nicht alle Zugriffe (mindestens 0.000...1% werden nicht, da nicht alle Zugriffe über ein FileHandle arbeiten)
Allerdings. Wenn ich die CSV-Dateien per Editor geöffnet habe, wird der Zugriff nicht erkannt, nur mal als Beispiel.
Status:
- FIAE
- Rechteinhaberin, ein Rüsselmops sein zu wollen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: IsFileInUse ergibt immer "false"

  Alt 24. Sep 2012, 17:01
Eigentlich müsste die Funktion IsFileInUse() ein dreiwertiges Ergebnis zurückliefern:
Code:
0=Datei vorhanden und nicht benützt
1=Datei vorhanden aber im Zugriff durch einen Prozess
2=Datei nicht vorhanden
Und was ist mit dem Fall das Datei wegen fehlender NTFS-Rechte kein Zugriff erlaubt ist?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.784 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: IsFileInUse ergibt immer "false"

  Alt 24. Sep 2012, 13:06
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;
Quelle

In dem Torry Beispiel wird nur auf Read oder Write getestet.
Wenn ein File ausführend geöffnet ist, kann es meines Wissen auch nicht beschrieben werden.

Hier ist noch ein anderes Beispiel zu finden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:27 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-2025 by Thomas Breitkreuz