Saturday, July 29, 2006

Test na možnost otevření souboru

Pokud hodláte pracovat s nějakým souborem, ne vždy je to možné, a to z několika důvodů. Daný soubor právě používá systém, jiná aplikace a podobně a k souboru zkrátka nemáme přístup, protože je momentálně používán někým jiným. Ukážeme si jednoduchou funkci, která nám zjistí, jestli je se souborem možno pracovat, nebo je právě používán:
function JePouzivan(soubor : string ) : boolean;
var HFileRes : HFILE;
begin
Result := false;
if not FileExists(soubor) then exit;
HFileRes := CreateFile(pchar(soubor), 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;

procedure TForm1.Button1Click(Sender: TObject);
begin
if JePouzivan('c:\VasSoubor.exe') then ShowMessage('Soubor je používán')
else ShowMessage('Soubor máte k dispozici');
end;