Кодирование атрибутов файла

Кодирование атрибутов файла

Previous pageReturn to chapter overviewNext page

Атрибуты файла являются битовой маской, в которой каждый бит кодирует определенный атрибут. Оперировать с битами несложно при помощи операций OR и AND.

 

Бит 0 (вес 1 = $01) - атрибут ReadOnly ("только чтение")

Бит 1 (вес 2 = $02) - атрибут Hidden ("невидимый")

Бит 2 (вес 4 = $04) - атрибут SysFile ("системный")

Бит 3 (вес 8 = $08) - атрибут VolumeID ("метка тома")

Бит 4 (вес 16 = $10) - атрибут Directory ("каталог")

Бит 5 (вес 32 = $20) - атрибут Archive ("архивирован")

Бит 6 (вес 64 = $40) - атрибут SymLink ("символьная ссылка")

 

Таким образом, если например требуется задать атрибуты "только чтение" и "архивирован", то 1 or 32 = 33. Аналогично с проверкой атрибутов - несложно маскировать интересующие нас биты при помощи оператора AND, например:

 

var

FAttr : integer;

begin

FAttr := GetAttr('%System32%\');

if FAttr <> $FFFFFFFF then

  if (FAttr and 79) > 0 then

  AddToLog('У системной папки подозрительные атрибуты');

end.

 

В данном примере маска 79 выделяет биты 0,1,2,3,6 для проверки, и если хотя-бы один из этих битов установлен, то выводится сообщение о подозрительных атрибутах.