функции С и C++, библиотек C++Builder, API Windows_______________869

int attrib = _rtl_chmod(SFile, 0);

_rtl_chmod(SFile, 1, attrib I FA_HIDDEN);

Следующие операторы определяют и отображают в окне редактирования Memol
атрибуты файла SFile:

int attrib = _rtl_chmod(SFile, 0) ;

if(attrib == -1)
(

Memol->Lines->Add("Ошибка номер " + IntToStr(errno));

return;

)
if (attrib & FA_RDONLY)

Memol->Lines->Add(SFile + " — файл только для чтения");

if (attrib & FA_HIDDEN)

Memol->Lines->Add(SFile + " — невидимый файл");

if (attrib & FA_SYSTEM)

Memol->Lines->Add(SFile + " — системный файл");

if (attrib & FA_DIREC)

Memol->Lines->Add(SFile + " - каталог");

if (attrib & FA_ARCH)

Memol->Lines->Add(SFile + " — архивный файл");

Функции FileAge, FileGetDate и FileSetDate оперируют с данными о времени
создания файла в формате DOS. В этом же формате хранится значение поля Time
структуры типа TSearchRec, используемой в функциях FindFirst и FindNext.
Преобразование этого формата в тип TDateTime может осуществляться функцией
FileDateToDateTime. См. также раздел 14.8, посвященный преобразованиям фор-
матов дат и времени.

Функция getftime читает время и дату создания файл, заданного своим деск-
риптором handle (он может быть определен функцией fileno), и заносит их в струк-
туру типа ftime, на которую указывает параметр ftimep. Функция setftime выпол-
няет обратную задачу: задает файлу время и дату в соответствии с данными, запи-
санными в структуру ftimep. Файл должен быть доступен для записи. В противном
случае произойдет ошибка EACCES. После установки времени и даты в файл ниче-
го нельзя записывать, пока он не закрыт. Иначе установка будет изменена.

При успешном завершении функции возвращают 0. В противном случае воз-
вращается -1, а глобальная переменная errno устанавливается в одно из следую-
щих состояний:

EACCES ошибка доступа

EBADF   ошибочный номер файла

EINVFNC ошибочный номер функции

Структура типа ftime имеет вид:

struct ftime {

unsigned ft_tsec: 5;      // пары секунд
unsigned ft min: 6;       // минуты
unsigned ft hour: 5;      // часы
unsigned ft day: 5;       // день
unsigned ft month: 4;     // месяц
unsigned ft year: 7;      // год — 1980

Следующий код в качестве примера определяет дату создания файла
«Test.txt», уменьшает день на 1 (делает дату вчерашней — предполагается, что
день не равен 1) и устанавливает файлу эту измененную дату:

FILE *stream;

std::ftime ft;

char buffer[80] ;

if ((stream = fopen("TEST.TXT", "r+t")) == NULL)
<