Jak sprawdzic czy plik istnieje w WinApi
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);
to niestarczy, np. mi - program w WinApi to 14 kB a zwykle FileExists to + 200 kB?
Ja raczej zastosowal bym GetFileAttributes, bo CreateFile moze zwrocic INVALID_HANDLE_VALUE takze w przypadku plikow do ktorych nie mamy dostepu a istnieja.