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łej | Wartość | Opis |
---|---|---|
faReadOnly | 1 | Pliki tylko do oczytu |
faHidden | 2 | Ukryte pliki |
faSysFile | 4 | Pliki systemowe |
faDirectory | 16 | Katalogi |
faArchive | 32 | Plik archiwalny |
faSymLink | 64 | Link symboliczny |
faAnyFile | 64 | Dowolny plik |
Zobacz też:
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).
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.