AGB  ·  Datenschutz  ·  Impressum  







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

IsFileInUse mit CreateFile

Ein Thema von omp · begonnen am 3. Nov 2017 · letzter Beitrag vom 3. Nov 2017
 
omp

Registriert seit: 7. Apr 2012
63 Beiträge
 
#1

IsFileInUse mit CreateFile

  Alt 3. Nov 2017, 10:35
Hallo. Um zu prüfen, ob eine Datei geöffnet ist, verwendet man gerne
Code:
function IsFileInUse(const AFileName: string; ANeedWriteAccess: boolean): boolean;
var LFileRes: HFILE;
    LAccess : DWord;
begin
  if ANeedWriteAccess then
    LAccess := GENERIC_READ or GENERIC_WRITE
  else
    LAccess := GENERIC_READ;
  LFileRes := CreateFile(pchar(AFileName),
                         LAccess, 0, nil,
                         OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);
  result := (LFileRes = INVALID_HANDLE_VALUE);
  if not result then
    CloseHandle(LFileRes);
end;
Der Code wird in diversen Foren und auf Tipp-Seite genannt und er funktionierte auch seit Jahren, dachte ich.

Als Win32-Application ist alles ok.

Als Win64 kompiliert und die .exe ausgeführt: Es wird nicht erkannt, dass die Datei geöffnet ist. Es gibt keine Exception.

Als Win64 im Delphi-Debugger ausgeführt verhält dich das Programm anders:
1. "Im Projekt .. ist eine Exception der Klasse $C0000008 mit der Meldung 'c0000008 INVALID_HANDLE' aufgetreten."
2. Dann die Fehlermeldung im Programm "Externe Exception C0000008". Diese kommt aber nicht, wenn ohne Debugger ausgeführt.
Tritt bei CloseHandle auf. LFileRes ist ein großer Integerwert, also <> INVALID_HANDLE_VALUE.

Habe auch ein neues Delphi-Projekt (10.2 Tokyo) angelegt und konnte es auch damit nachvollziehen.

Jetzt habe ich ein Fragezeichen auf dem Kopf.
Harald
  Mit Zitat antworten Zitat
 


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 21:47 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