MS-DOS для программиста


Поиск в каталогах


Часто перед программистом стоит задача определения содержимого каталога. При описании логической структуры диска мы приводили текст программы, выводящей на экран содержимого корневого каталога и других каталогов. Эта программа использовала загрузочный сектор логического диска и таблицу размещения файлов . Вы можете использовать такой способ, однако если вам не требуется информация о номерах начальных кластеров файлов и дескрипторы удаленных файлов, лучше применить специальные функции MS-DOS, предназначенные для поиска файлов в каталогах.

Это функции 4Eh и 4Fh.

Указанные выше функции используются вместе следующим образом:

Вначале вызывается функция 4Eh для поиска в каталоге файла, соответствующего образцу. В образце можно использовать символы "?" и "*", которые означают, соответственно, один любой символ и любое количество любых символов. Информация о найденном файле располагается в специальной области, распределенной каждой работающей программе - области DTA .

Затем для поиска остальных файлов, удовлетворяющих заданному ранее образцу, в цикле вызывается функция 4Fh. Условие завершения цикла - отсутствие в каталоге указанных файлов.

Функция 4Eh вызывается следующим образом:

На входе: AH 4Eh
CX Атрибуты файла, которые будут использованы при поиске. Будут найдены файлы, имеющие атрибут, заданный в регистре CX
DS:DX Адрес строки в формате ASCIIZ, содержащей путь каталога или файла
На выходе: AL Код ошибки, если был установлен флаг переноса CF

Функция 4Fh имеет следующие параметры вызова:

На входе: AH 4Fh
На выходе: AL Код ошибки, если был установлен флаг переноса CF

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

Для работы с областью DTA в составе MS-DOS имеются две функции. Это функция 2Fh, позволяющая получить адрес области DTA (она возвращает этот адрес в регистрах ES:BX), и функция 1Ah, предназначенная для установки своей области DTA (адрес новой области DTA должен быть указан в регистрах DS:DX).




Начало  Назад  Вперед



Книжный магазин