Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei geöffnet? (https://www.delphipraxis.net/93414-datei-geoeffnet.html)

Stillmatic 5. Jun 2007 17:13


Datei geöffnet?
 
Wie kann man herausfinden ob eine Datei geöffnet ist oder nicht??
Delphi-Quellcode:
If TFileRec(Datei).Mode <> fmClose then
Mit dieser Abfrage klappt es bei mir nicht da, TFileRec(Datei) eine Zahl als Result liefert und nicht ein Open oder Close!!

Kann mir da einer auf die Sprünge helfen??

DeddyH 5. Jun 2007 17:47

Re: Datei geöffnet?
 
Das hier hat bei mir funktioniert:
Delphi-Quellcode:
function IsFileOpen(const FileName: string): Boolean;
var Stream: TFileStream;
begin
  Result := false;
  if not FileExists(FileName) then exit;
  try
    Stream := TFileStream.Create(FileName,fmOpenRead or fmShareExclusive);
  except
    Result := true;
    exit;
  end;
  Stream.Free;
end;

Klaus01 5. Jun 2007 20:45

Re: Datei geöffnet?
 
In der Delphi Hilfe steht:

Delphi-Quellcode:
type TFileRec = packed record

    Handle: Integer;
    Mode: Word;  //<----
    Flags: Word;
    case Byte of
Wenn man dann weiter schaut, dann kommt man hierhin:


Zitat:

File mode constants are used to open and close disk files.

Unit
System

Category
file management routines

const fmClosed = $D7B0; // closed file
const fmInput = $D7B1; // reset file (TTextRec)
const fmOutput = $D7B2; // rewritten file (TTextRec)
const fmInOut = $D7B3; // reset or rewritten file (TFileRec)
const fmCRLF = $8 // DOS-style EoL and EoF markers (TTextRec)
const fmMask = $D7B3; // mask out fmCRLF flag (TTextRec)

Description

Use the file mode constants when opening and closing disk files.
The Mode field of TFileRec and TTextRec will contain one of these values.
Grüße
Klaus

Luckie 5. Jun 2007 22:45

Re: Datei geöffnet?
 
@DeddyH: Das funktioniert aber nur, wenn der andere Prozess die Datei exklusiv geöffnet hat. Ansonsten müsste man wohl einen Treiber programmieren, um zu gucken welche Prozesse ein Handle auf die Datei haben.

@Stillmatic: Wenn es nur um dein Programm geht, dann merk dir doch einfach, ob du sie schon geöffnet hast. Das erfordert natürlcih, dass du sie auch immer wieder konsequent schlieest.

marabu 6. Jun 2007 09:34

Re: Datei geöffnet?
 
Hier noch ein Link auf einen Thread zum gleichen Thema: ermitteln ob eine filevariable geoeffnet ist

Grüße vom marabu

SirThornberry 6. Jun 2007 09:51

Re: Datei geöffnet?
 
Zitat:

Zitat von Luckie
@DeddyH: Das funktioniert aber nur, wenn der andere Prozess die Datei exklusiv geöffnet hat.

Falsch. Er versucht ja die Datei exlusiv zu öffnen. Wenn sie bereits geöffnet ist (egal ob exclusiv oder nicht) kann sie nicht exclusiv geöffnet werden und es wird die exception geworfen.

marabu 6. Jun 2007 10:00

Re: Datei geöffnet?
 
Hallo,

ich ging davon aus, dass Stillmatic beim Verlassen seines Programms noch eventuell geöffnete Dateien schließen möchte, damit gepufferte Inhalte korrekt auf die Datenträger geschrieben werden. Wenn es um etwas anderes geht, dann ignoriert meinen Beitrag #5 bitte.

Verlegene Grüße

DeddyH 6. Jun 2007 10:01

Re: Datei geöffnet?
 
Zitat:

Zitat von SirThornberry
Er versucht ja die Datei exlusiv zu öffnen. Wenn sie bereits geöffnet ist (egal ob exclusiv oder nicht) kann sie nicht exclusiv geöffnet werden und es wird die exception geworfen.

So war mein Gedankengang :mrgreen:

himitsu 6. Jun 2007 13:38

Re: Datei geöffnet?
 
eine Lösung wurde zwar schon genannt,

aber wenn du mal nach [dp]Datei geöffnet[/dp] gesucht hättest, dann wären dir eventuell mehrere Beiträge dazu aufgefallen ... z.B. auch diese Beiden:
http://www.delphipraxis.net/internal...tei+ge%F6ffnet (könnte eventuell interessant sein)
http://www.delphipraxis.net/internal...tei+ge%F6ffnet

[add]
@#10+#11: also, wenn die Überschrift sogar schon genug gute Lösungen liefert, dann darf man dat wohl mal bemängeln :angel:

Luckie 6. Jun 2007 13:42

Re: Datei geöffnet?
 
Zitat:

Zitat von himitsu
aber wenn du mal nach [dp]Datei geöffnet[/dp] gesucht hättest

Was für ein Frevel auf die Suchfunktion zu verweisen. :roll: :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 Uhr.
Seite 1 von 2  1 2      

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