Programowanie w języku Delphi

FileGetAttr

  • 2010-10-31 18:27
  • 2 komentarze
  • 854 odsłony
  • Oceń ten tekst jako pierwszy
FileGetAttr
Moduł: SysUtils

function FileGetAttr(const FileName: string): Integer;

Funkcja pobiera atrybuty pliku podanego w parametrze FileName. Atrybuty zwracane są jako ciąg bitów, więc sposób ich odczytu jest dość "specyficzny" (patrz przykład poniżej). Do ustawiania atrybutów danego pliku służy funkcja FileSetAttr.

Przykład odczytu atrybutów wskazanego pliku:

program Foo;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Dialogs;
 
var
  FileName : String;
  Attr : Integer;
begin
  if PromptForFileName(FileName) then
  begin
    Attr := FileGetAttr(FileName);
 
    Writeln('faReadOnly: ', (Attr and faReadOnly) = faReadOnly);
    Writeln('faArchive: ', (Attr and faArchive) = faArchive);
    Writeln('faSysFile: ', (Attr and faSysFile) = faSysFile);
    Writeln('faHidden: ', (Attr and faHidden) = faHidden);
    Writeln('faDirectory: ', (Attr and faDirectory) = faDirectory);
    Readln;
  end;
end.


Stałe takie jak np. faReadOnly zadeklarowane są w module SysUtils, ich pełna lista znajuje się w tabeli poniżej.

Nazwa stałejWartośćOpis
faReadOnly1Pliki tylko do oczytu
faHidden2Ukryte pliki
faSysFile4Pliki systemowe
faDirectory16Katalogi
faArchive32Plik archiwalny
faSymLink64Link symboliczny
faAnyFile64Dowolny plik


Zobacz też:

2 komentarze

mgyver 2009-12-19 13:07

No racja. Trzeba to uaktualnić zwłaszcze że w Delphi 2010 dalej jest błąd z faAnyFile. Zamiast stosować faAnyFile można użyć wartości #FFFFFF. Wtedy przy szukaniu plików pod Vistą, procka będzie zwracać wszystkie pliki.

Ingenious16 2006-09-07 18:59

Nie wiem jak jest pod Windows XP ale pod Windows 98 atrybut Dowolny plik ma wartość 0 a nie 64. Sprawdziłem i miałem ustawiony tylko atrybut Tylko do odczytu i używając SetFileAttributes(PChar(FileName),64) nie udało mi się usunąć tego atrybutu. Pomogło dopiero
SetFileAttributes(PChar(FileName),0); Jeśli mam rację to niech ktoś wyedytuje artykuł (ja się za to nie zabieram bo nie wiem jak jest pod Windows XP).