Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум_ОС.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
383 Кб
Скачать
☆

Процедуры работы с датой и временем создания/модификации файла

Для работы с датой создания файла используется процедура:

GetFTime (VAR F; VAR Time : LongInt);

которая возвращает время и дату создания файла. Переменная F должна быть файловой переменной.

Время и дата возвращаются в переменной Time в упакованном формате в виде двойного слова (32 бита), и для их распаковки используется процедура

UnpackTime (Time : LongInt; VAR DT : DateTime);

Эта процедура преобразовывает значение, переданное в параметре Time, в запись DT типа DateTime (дата и время). Тип DateTime описан в модуле DOS следующим образом:

TYPE

DateTime = RECORD

Year, Month, Day, Hour, Min, Sec: WORD;

END;

Таким образом, объявив в программе переменную типа DateTime, можно получить доступ к дате и времени создания или последней модификации файла.

Процедуры GetFTime и UnpackTime используются для считывания даты и времени создания файла. Для того, чтобы изменить эту величину, используются две другие процедуры: PackTime и SetFTime.

Процедура:

PackTime (VAR T : DateTime; VAR Time : LongInt);

преобразовывает запись типа DateTime в двойное слово, используемое процедурой:

SetFTime (VAR F; Time : LongInt);

Процедура SetFTime устанавливает дату создания файла. О том, как прошла данная операция, можно узнать из переменной DosError, описанной в модуле DOS. В случае успешного завершения переменная DosError будет содержать значение 0. В случае неудачи код ошибки может быть только 6 (разрушен заголовок файла).

Файл, для которого необходимо изменить дату создания, должен быть открыт для чтения. Если файл открыт процедурой Rewrite, то после того, как дата его создания изменена и в конце работы файл будет закрыт процедурой Close, дата создания автоматически обновится, т.е. установится текущая системная дата. Поэтому, если происходит запись в файл, а затем требуется изменить дату его создания, можно просто выполнить перед процедурой SetFTime команду Reset, т.е. открыть файл для чтения.

Необходимость в операциях чтения и изменения даты создания файла может возникнуть, например, при создании программ, контролирующих файлы на заражение вирусами, или при создании резервных копий файлов, которые были созданы за последнее время [1].

Задания

  1. Написать программу на языке Паскаль, позволяющую изменять системную дату.

  2. Написать программу на языке Паскаль, позволяющую считывать и изменять системное время. Текущее время выводить по формату хх:хх:хх.хх. Новое системное время задавать с клавиатуры.

  3. Написать программу, считывающую и изменяющую дату и время создания произвольного файла. Имя файла, а также новые дату и время файла, задавать с клавиатуры.

Лабораторная работа № 2 проверка состояния диска

Модуль DOS в Турбо-Паскаль содержит ряд функций и процедур для работы с диском. С их помощью можно осуществлять контроль наличия свободного пространства на диске, контроль правильности записи на диск, а также определять общий объем памяти диска. Функция:

DiskFree (Drive: BYTE) : LongInt;

возвращает количество свободных байтов на указанном диске, где Drive задает номер диска: 0 – текущий диск, т.е. тот диск, с которого запущена программа; 1 - дисковод А; 2 - дисковод B; 3 - диск С; 4 - диск D и т.д. Если номер диска задан некорректно, то функция возвращает значение -1. Таким образом, всегда есть возможность проконтролировать правильность вызова функции. Функция:

DiskSize (Drive: BYTE) : LongInt;

возвращает общее количество байтов на указанном диске, где Drive задает номер диска. Номер диска задается так же, как и для функции DiskFree (0 – текущий диск; 1 – дисковод А и т.д). Если номер диска задан некорректно, то функция возвращает значение -1.

Процедура GetVerify используется для получения значения флага проверки DOS, имеющего название VERIFY. Этот флаг служит для определения метода записи данных на диск. Если VERIFY находится во включенном состоянии, т.е. он равен ON (истина), то после того, как информация записана на диск, она снова читается и сверяется с оригиналом (verify – «проверять»). Если же флаг находится в выключенном состоянии, т.е. OFF (ложь), то информация записывается на диск без проверки. Существуют различные мнения по поводу того, стоит ли включать данный флаг во время работы, но практика показывает, что винчестер – довольно надежное устройство и информация на него либо записывается хорошо, либо не записывается вовсе. К тому же данная проверка правильности записи сильнее изнашивает винчестер и дисководы (ведь требуется записать, а затем еще и считать) и значительно увеличивает время записи. Поэтому включать этот флаг необходимо, когда ценная информация записывается с винчестера на гибкие диски. Формат процедуры GetVerify следующий:

GetVerify (VAR Verify : Boolean);

Процедура помещает в параметр Verify значение ON или OFF. Если Verify равен ON, происходит проверка правильности записи на все диски, если OFF – информация записывается без проверки [2].

Если возникает необходимость удостовериться в правильности записи важной информации на диск, необходимо включить флаг проверки. Для этого предназначена процедура:

SetVerify (Verify : Boolean);

которая устанавливает или отменяет флаг проверки в зависимости от значения параметра Verify.