15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как узнать или установить аттрибуты файла.

Компилятор: Delphi

Чтобы прочитать аттрибуты файла, необходимо передать имя файла в функцию FileGetAttr, которая вернёт аттрибуты для данного файла.

Например, добавьте на форму компоненты TButton и TLabel и добавьте следующий код в в обработчик события OnClick кнопки:

var
attr:Integer;
s:string;
begin
attr:=FileGetAttr('c:\Autoexec.bat');
if(attr and faHidden)<>0 then s:='Hidden';
if(attr and faReadOnly)<>0 then s:=s+'Read-Only';
if(attr and faSysFile)<>0 then s:=s+'System';
if(attr and faArchive)<>0 then s:=s+'Archive';
Label1.Caption:=s;


---------------------------
Чтобы установить аттрибуты у файла, необходимо передать имя файла и нужные аттрибуты в функцию FileSetAttr. Каждый аттрибут имеет мнемоническое имя, объявленное в юните SysUtils.

Например, чтобы установить файлу системный атрибут, необходимо выполнить следующий код:

Attributes := Attributes or faSystem;

Так же можно очистить некоторые аттрибуты. Например, чтобы снять атрибуты только чтения и "Скрытый", необходимо выполнить следующий код:

Attributes := Attributes and not (faReadOnly or faHidden);


---------------------------
Вместо объявленных значений атрибутов можно использовать числовые значения.

     +----------------------------------+
     | Возвр. знач.| Аттр. Файла         |
     +----------------------------------+
     |   128             |   Нормальный     |
     |    1                 |   Только чтение   |
     |   2                 |   Скрытый           |
     |   4                 |   Системный        |
     |   32               |    Архивный         |
     +--------------+------------------+
Пример:

FileSetAttr('C:\Autoexec.bat',2);{Скрытый}  
FileSetAttr('C:\Autoexec.bat',3);{Скрытый и Только чтение. В свою очередь функция FileGetAttr
                                                    вернёт значение 3}