Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   IsFileInUse Result bei .xml, .txt falsch (https://www.delphipraxis.net/192055-isfileinuse-result-bei-xml-txt-falsch.html)

zobien123 17. Mär 2017 08:22

IsFileInUse Result bei .xml, .txt falsch
 
Guten Morgen Zusammen,

ich habe eine function mit der ich überprüfe, ob eine Datei/exe geöffnet ist.

Code:
function IsFileInUse(const fName: TFileName): Boolean;
var
  HFileRes: HFILE;
begin
  Result := False;
  HFileRes := CreateFile(PChar(fName),
                         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;
Die function funktioniet auch so weit mit .exe, .ini, ..., jedoch gibt sie bei .txt und .xml Dateien imemr aus, dass die Datein geöffnet sind und ich weiß nicht warum.

jobo 17. Mär 2017 08:38

AW: IsFileInUse Result bei .xml, .txt falsch
 
Schau erst mal im Betriebssystem unter
Systemsteuerung
>Verwaltung
>>Computerverwaltung
>>>System
>>>>Freigegebene Order
>>>>>Geöffnete Dateien

ggF. auch besonders nach einem Neustart.

Vielleicht schluießt Du (oder ein Programm ) sie nicht richtig.

zobien123 17. Mär 2017 08:39

AW: IsFileInUse Result bei .xml, .txt falsch
 
Okay ich glaube ich hab den Fehler gefunden.

Und zwar lag es wohl an dem fName: TFileName. Ich habe jetzt fName: String gemacht und nun scheint es zu funktionieren.

Nochmal die function komplett und richtig:

Code:
function IsFileInUse(const fName: String): Boolean;
var
  HFileRes: HFILE;
begin
  Result := False;
  HFileRes := CreateFile(PChar(fName),
                         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;

Klaus01 17. Mär 2017 08:44

AW: IsFileInUse Result bei .xml, .txt falsch
 
.. muss ich nicht verstehen: TFileName und String sind beide UnicodeStrings.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 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