AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Prüfen, ob eine Datei geöffnet werden kann
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen, ob eine Datei geöffnet werden kann

Ein Thema von gkoeder · begonnen am 18. Okt 2004 · letzter Beitrag vom 19. Okt 2004
Antwort Antwort
gkoeder

Registriert seit: 15. Jun 2004
84 Beiträge
 
Delphi 2010 Professional
 
#1

Prüfen, ob eine Datei geöffnet werden kann

  Alt 18. Okt 2004, 13:53
Hallo,

hab' eine eigendlich recht einfache Frage: Wie kann man prüfen, ob eine Datei zum lesen geöffnet werden kann (z.B. also von keinem anderen Programm gerade geöffnet ist)?
Ich hab's bisher mit folgender Funktion probiert, allerdings wird z.B. ein gerade geöffnetes Excel-File problemlos durchgereicht (was dann später zu nem I/O Error 32 führt):

Delphi-Quellcode:
function CanOpenFile(const aName: string; var ReadOnly: Boolean): Boolean;
var
  HFileRes: hFILE;
  fStream: tFileStream;
begin
  Result := False;
  ReadOnly := True;
  HFileRes := 0;
  if FileExists(aName) = True
  then
    begin
      try
        fStream := TFileStream.Create(aName, fmOpenRead OR fmShareDenyNone);
        try
          Result := true;
          Try
            HFileRes := CreateFile(pchar(aName), GENERIC_READ or GENERIC_WRITE, 0 , nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
            ReadOnly := (HFileRes = INVALID_HANDLE_VALUE);
          Finally
            If HFileRes <> 0 then CloseHandle(HFileRes);
          End;
        finally
          fStream.Free;
        end;
      except
        Result := false;
      end;
    end;
end;
Thanks,
Gerald
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Prüfen, ob eine Datei geöffnet werden kann

  Alt 19. Okt 2004, 10:04
Ich vermute, dass Deine Routine schon korrekt ist. Jedoch arbeitet Office mit temporären Dateien, die parallel zu Deiner Datei angelegt werden, vermutlich darfst Du also die geöffneten Office Files trotzdem noch öffnen.

Probiere es mal so:
Delphi-Quellcode:
Function TryOpen(FileName: String):Boolean;
var aFile: File;
begin
  Result := False;
  AssignFile(aFile, FileName);
  Try
    Try
     Reset(aFile);
    Finally
     CloseFile(aFile);
    End;
    Result := True;
  Except
  End;
end;
Schöne Grüße,
Mario Noack
  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 05:43 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