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

Задания

  1. Написать программу на языке Паскаль для вывода на экран общего, свободного и занятого дискового пространства для произвольного логического диска (в Мб); для дискеты (в Кб). Диск задавать с клавиатуры. Рассчитать и вывести на экран суммарный объем использованного и неиспользованного дискового пространства компьютера.

  2. Написать программу на языке Паскаль для вывода на экран текущего значения флага проверки DOS verify и изменения его значения на противоположное.

Лабораторная работа № 3 работа с файлами: поиск

Для работы с файлами в модуле Dos определены следующие процедуры и функции:

  1. функция FExpand - дополнение имени файла до полного значения (текущий путь, имя, расширение);

  2. функция FSearch - поиск файла в списке каталогов;

  3. процедура FindFirst - поиск первого файла с заданным именем и атрибутами;

  4. процедура FindNext - поиск следующего файла с заданным именем и атрибутами;

  5. процедура FSplit - разбиение полного имени файла на составные части (путь, имя, расширение);

  6. процедура GetFAttr - получение текущих атрибутов файла;

  7. процедура SetFAttr - задание новых атрибутов файла.

Работа с файлами в Турбо Паскаль приводит к необходимости использования терминологии и средств MS-DOS. Иногда возникает необходимость поиска файлов с одинаковым именем, поиска по шаблону, выделения нужного файла из найденной группы файлов.

Процедуры FSplit, FExpand, FSearch, FindFirst, FindNext упрощают решение этих задач.

Пусть необходимо определить имена всех файлов с расширением .PAS, которые находятся в определенном каталоге. Для этого используются следующие процедуры:

FindFirst (Path: STRING; Attr: WORD; VAR S: SearchRec);

FindNext (VAR S: SearchRec);

где Path — путь и имя для поиска; Attr — задаваемые атрибуты файла; S — переменная типа SearchRec, который описан ниже.

Процедура FindFirst ищет первый файл с заданным именем и набором атрибутов в указанном каталоге. Процедура FindNext ищет следующий файл с атрибутами, заданными при вызове FindFirst, если имя было задано шаблоном.

Обе эти процедуры используют переменную типа SearchRec для просмотра каталога. Информация о каждом файле, найденная FindFirst или FindNext, возвращается в переменной этого типа.

Тип SearchRec описан в модуле Dos следующим образом:

TYPE

SearchRec = RECORD

Fill: ARRAY [1..21] OF BYTE;

Attr: BYTE;

Time: LongInt;

Size: LongInt;

Name: STRING [12];

END;

Поле Attr содержит атрибуты файла, которые определяются константами атрибутов файла, описанными в модуле Dos (табл. 1). Поле Time содержит дату и время создания файла в упакованном виде (для распаковки необходимо использовать процедуру UnpackTime). Поле Size содержит размер файла в байтах. Поле Name содержит имя найденного файла. Поле Fill содержит служебную информацию MS-DOS и не должно модифицироваться [1-2].

Константы атрибутов файла могут принимать следующие значения:

Таблица 1

Название

Значение

ReadOnly (только для чтения)

$01

Hidden (скрытый )

$02

SysFile (системный)

$04

VolumeID (заголовок тома)

$08

Directory (каталог)

$10

Archive (архивный)

$20

AnyFile (любой файл)

$3F

Если в параметре Path не указан путь, а приведено только имя файла или шаблон, то поиск будет осуществляться в текущем каталоге. Например:

FindFirst (‘*.PAS’, AnyFile, S);

Если же надо искать файл в другом каталоге, то в параметре Path указывается путь к нужному каталогу.

Процедура FindNext ищет следующий файл с именем и атрибутами, заданными при вызове FindFirst, если имя файла было задано шаблоном. Если FindNext не находит больше файлов, в системной переменной DosError устанавливается значение 18. В случае успешного завершения переменная DosError будет содержать 0.

Процедуры FindFirst и FindNext при поиске файла (группы файлов) просматривают только указанный каталог. Если же возникает необходимость поиска в различных каталогах, то используется функция FSearch. Функция имеет формат:

FSearch (path: PathStr; DirList: STRING) : PathStr;

где Path — путь и имя файла, который необходимо найти. Тип PathStr описан в модуле Dos, как строковый тип STRING[79]. DirList - список каталогов, в которых будет проводиться поиск. Каталоги в списке должны быть разделены символом «;» аналогично тому, как это делается в команде MS-DOS PATH.

Поиск всегда начинается с текущего каталога текущего диска. В случае удачного поиска функция возвращает строку, в которой содержится полное имя файла (путь и имя). В случае неудачи возвращается пустая строка.