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

16.3. Анализ ресурсов дисков

Модуль DOS включает в себя две функции для анализа дисков:

DiskFree( D : Word ) : LongInt {354}

и

DiskSize( D : Word ) : LongInt

Обе функции возвращают длинное целое число — размер свободного пространства на диске и общую вместимость диска в байтах соответственно.

Параметром является целая переменная или целое число, указывающее на конкретный диск. Если D = 0, то анализируется текущий диск, D = 1 соответствует диску A: , D = 2 — диску B: и т.д.

Если система не может установить соответствие введенного значения параметра D конкретному диску, то функции будут возвращать значение (-1). Эту особенность можно использовать для определения характеристик подключенных к ПЭВМ дисководов (хотя это не самый эффективный способ), как это показано в программе на рис. 16.6.

{ПРОГРАММА АНАЛИЗА ЖЕСТКИХ И ВИРТУАЛЬНЫХ ДИСКОВ }

USES DOS;

VAR i : Byte; disk : LongInt; { объем дисков }

ch : Char; { буква диска }

BEGIN

{ Анализ ячейки системной памяти ПЭВМ: }

i := ( Mem[0:$411] shr 6 ) + 1;

WriteLn( #10'Дисководов для гибких дисков:', i );

i:= 3; ch:= 'С'; disk:= DiskSize(i); { начало анализа }

if disk>0 then WriteLn('Жесткие и виртуальные диски:');

while disk > -1 do begin

WriteLn( 'Диск '+ch+': -> ОБЪЕМ=', disk:8,

' Байт; СВОБОДНО ', DiskFree( i ),' Байт' );

Inc( i ); ch := Succ( ch ); { следующий диск }

disk := DiskSize( i ) end; {while}

END.

Рис. 16.6

Первая строка тела процедуры проверяет количество накопителей на гибких дисках (для применения к ним процедур DiskSize и DiskFree надо быть уверенным, что в дисководы вставлены дискеты и шторки на них задвинуты). Далее цикл While анализирует жесткие и виртуальные диски. Цикл продолжается до первого отсутствующего диска. При этом мы считаем, что первый жесткий диск имеет обозначение C: . {355}

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

disk := DiskSize( i ) div 1024

Полученное число будет ближайшим меньшим целым числом K.

Проверка самого факта существования в ПЭВМ дисковода может производиться непосредственным вызовом функции MS-DOS. Пример этого будет рассмотрен в разд. 16.5.3 «Процедура MsDos».

16.4. Работа с каталогами и файлами

Традиционные средства языка Паскаль предоставляют минимальные возможности при работе с внешними файлами. Обычно, это открытие, закрытие, переименование и удаление файла (две последние функции отсутствуют в стандарте языка, но имеются в системной библиотеке Турбо Паскаля). А такие специальные действия, как поиск файлов и работа с их атрибутами, реализованы лишь на уровне функций операционной системы и доступны только с помощью средств ассемблера. Некоторые из таких средств включены в виде процедур и функций в модуль DOS Турбо Паскаля (табл. 16.3).

Таблица 16.3

Процедуры и функции

Назначение

Поиск файлов (анализ каталогов)

FindFirst(Path : String; Attr : Word; VAR SR : SearchRec)

Находит первое подходящее запросу Path имя с заданным атрибутом Attr

FindNext(VAR SR : SearchRec)

Вызывается после FindFirst для нахождения дальнейших подходящих имен

FSearch(Path : PathStr; DirList : String) : PathStr

Ищет файл с именем Path в списке каталогов DirList; возвращает полное имя файла

Анализ атрибутов файлов

GetFAttr(VAR f : File; VAR FA : Word)

Считывает атрибут FA файла на диске, связанного с f

SetFAttr(VAR f : File; FA : Word)

Устанавливает атрибут файлу на диске, связанному с f {356}

Синтаксический анализ имени

Fsplit(Path : PathStr; VAR Dir : DirStr;

VAR Name : NameStr;

VAR Ext : ExtStr)

Разбивает полное имя файла Path на его составляющие (подстроки): путь Dir, имя Name и расширение Ext

Fexpand(Path : PathStr) : PathStr

Приписывает к имени файла Path текущий маршрут

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]