Programowanie w języku Delphi » FAQ

Jak sprawdzic czy plik istnieje w WinApi

  • 2007-10-15 19:55
  • 2 komentarze
  • 640 odsłon
  • Oceń ten tekst jako pierwszy
Aby w WinApi sprawdzic czy plik istnieje, trzeba sprobowac go utworzyc i skorzystac z zwracanego bledu, np.

function FileExists(FName: String): Boolean;
var
  FileO: THandle;
 
begin
  FileO := CreateFile(PChar(FName), GENERIC_READ, FILE_SHARE_READ, Nil, OPEN_EXISTING, 0, 0); // proba utworzenia pliku
  if FileO <> INVALID_HANDLE_VALUE then // jesli plik istnieje
    Result := True
  else // jesli plik nie istnieje
    Result := False;
 
  CloseHandle(FileO);
end;


Uzycie wyglada tak jak przy VCL, czyli:

if FileExists('C:\plik.txt') then
  MessageBox(0, 'Plik istnieje!', 'Informacja', 0)
else
  MessageBox(0, 'Plik nie istnieje!', 'Informacja', 0);

2 komentarze

GieKaA 2007-10-15 20:00

to niestarczy, np. mi - program w WinApi to 14 kB a zwykle FileExists to + 200 kB?

reichel 2007-10-15 20:44

Ja raczej zastosowal bym GetFileAttributes, bo CreateFile moze zwrocic INVALID_HANDLE_VALUE takze w przypadku plikow do ktorych nie mamy dostepu a istnieja.