Псковский государственный политехнический институт


НазваниеПсковский государственный политехнический институт
страница26/30
ТипУчебное пособие
filling-form.ru > Бланки > Учебное пособие
1   ...   22   23   24   25   26   27   28   29   30

§9.5. Модуль DOS


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

В модуле Dos введены процедуры и функции, позволяющие получить доступ к некоторым ресурсам DOS.
Для поиска первого и следующего файла с заданным именем используются соответственно процедуры:

FindFirst (Path:String; Attr:Word; Var S:SearchRec);

FindNext (Var S:SearchRec);

Здесь:

Path – путь и имя искомого файла. При отсутствующем пути поиск производится в текущем каталоге, возможно использование шаблонов.

Attr – задаваемые атрибуты файла. В качестве Attr можно использовать константу AnyFile, означающую любые атрибуты.

S – возвращаемая переменная со следующей структурой:

SearchRec=Record

Fill: Array [1..21] of byte;

Attr: byte;

Time: LongInt;

Size: LongInt;

Name: String [12];

end;

Здесь поле Fill содержит служебную информацию DOS.

Attr – реальные атрибуты файла.

Time – дата и время создания файла в упакованном виде.

Size – размер файла в байтах.

Name – имя найденного файла.

Искомый файл может отсутствовать, поэтому после использования этих и некоторых следующих процедур анализируют системную переменную DosError, описанную выше.

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

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

Выходным параметром для неё является запись DT, имеющая следующую структуру:

DateTime = Record

Year, Month, Day, Hour, Min, Sec: Word

end;

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

Program FindPas;

{ Поиск файлов с Паскаль-программами }

Uses Dos;

Var

DT:DateTime;

S:SearchRec;

Begin

Writeln;

FindFirst ('*.pas',AnyFile,S);

While DosError=0 do

Begin

UnpackTime (S.Time,DT);

WriteLn(' Файл ',S.Name,' создан ',

DT.Day,'.',DT.Month,'.',DT.Year,

' время: ',DT.Hour,':',DT.Min,':',DT.Sec,

' размер ',S.Size,' байт');

FindNext (S);

end

end.

Если необходимо искать файлы не в одном, а в нескольких каталогах, то используют функцию

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

Тип PathStr является предопределенным:

PathStr=String [79];

Здесь: Path – имя искомого файла, может быть составным.

DirList – список каталогов, в которых будет производиться поиск, каталоги разделяются точкой с запятой, например:

S:= FSearch ('EDIT.EXE','C:\DOS;C:\NC;C:\NU');

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

Список каталогов используется аналогично принятым правилам в DOS. Обычно в файле автозапуска AUTOEXEC.BAT содержится команда PATH, присваивающая этой переменной окружения имена каталогов, в которых находятся наиболее часто используемые файлы. В этом случае поиск файлов из среды DOS производится не только в текущем и корневом каталогах, но и в каталогах, указанных в этой команде.

Чтобы воспользоваться этой переменной, в модуле DOS введена функция

GetEnv (EnvVar:String):String;

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

PATH C:\DOS;C:\WINDOWS;C:\NC ,

то после выполнения

S := GetEnv ('PATH');

S примет значение

C:\DOS;C:\WINDOWS;C:\NC ,

что может являться аргументом функции FSearch.
Из составного имени файла можно отдельно выделить полный путь, чисто имя и расширение процедурой

FSplit (Path:PathStr; Var Dir:DirStr; Var Name:NameStr; Var Ext:ExtStr);

Типы определены как

DirStr = String [67];

NameStr = String [8];

ExtStr = String [4];

Пример поиска файла.

Program PoiskFile;

{ Пример программы поиска файла }

Uses Dos;

Var

NameIn,NameFul:PathStr; { входное и составное имя файла }

Dir:DirStr;

Name:NameStr;

Ext:ExtStr;

Begin

Writeln(' Введите имя искомого файла: ');

Readln(NameIn);

NameFul:=FSearch(NameIn,GetEnv('PATH'));

If NameFul='' then

Writeln('Файл ',NameIn,' не найден')

else

Begin

FSplit(NameFul,Dir,Name,Ext);

Writeln('файл ',Name,' с расширением ',Ext,

' найден в каталоге ',Dir)

end

end.

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

DiskSize (Drive:Byte):LongInt;

– определение общего объема указанного логического устройства (диска) в байтах;

DiskFree (Drive:Byte):LongInt;

– определение количества свободных байт на диске.

Номер диска задается как: 0 – текущий, 1 – А, 2 – С и т.д.
Для работы с текущей датой и временем используются процедуры:

GetDate ( Var Year,Month,Day,Day_of_week: Word);

– определяет текущую системную дату. Здесь Day_of_week определяет порядковый день недели от 0 до 6, причем 0 означает воскресенье.

Аналогично для установки новой даты:

SetDate (Year,Mount,Day:Word);

Процедура для определения системного времени:

GetTime ( Var Hour,Minute,Second,Hund:Word);

Здесь Hund — сотые доли секунды со значением от 0 до 99. Они определяются приблизительно, так как внутренний генератор переключается 18,2 раза в секунду.

Для установки системного времени применяется процедура

SetTime (Hour,Minute,Second,Hund:Word);

Но бо́льшие возможности дает работа непосредственно с процедурами операционной системы и внешними устройствами.
Для работы с прерываниями в модуле DOS предусмотрены две процедуры вызова прерываний.

Intr (IntNo:Byte; Var Regs: Registers);

Здесь:

IntNo – номер прерывания;

Regs – содержимое регистров процессора следующего типа:

Registers = Record

Case integer of

0: (AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags:Word);

1: (AL,AH,BL,BH,CL,CH,DL,DH:Byte);

end;

То есть поля записи соответствуют либо шестнадцатиразрядным, либо восьмиразрядным регистрам процессора. Например, установка графического режима 640х480 точек, 16 цветов:

Var R:Registers;

... ...

R.AH:=0; R.AL:=$12;

Intr ($10,R);

Так как очень часто используется вектор прерывания DOS 21H, то добавлена специальная процедура для работы только с этим прерыванием:

MSDos ( Var Regs:Registers);

полностью эквивалентная

Intr ($21,Regs);

Например, определение версии DOS:

Uses Dos;

Var R:Registers;

... ...

R.AH:=$30;

MSDos ( R );

Writeln ('MS-DOS ',R.AL,'.',R.AH);

... ...
1   ...   22   23   24   25   26   27   28   29   30

Похожие:

Псковский государственный политехнический институт iconПравила приема в Институт ядерной энергетики (филиал) федерального...
Институт ядерной энергетики (филиал) федерального государственного бюджетного образовательного учреждения высшего профессионального...

Псковский государственный политехнический институт iconПравила приема граждан юргту (нпи), на обучение по программам подготовки...
«Южно-Российский государственный технический университет (Новочеркасский политехнический институт)»

Псковский государственный политехнический институт iconГбоу ао спо «Астраханский государственный политехнический колледж»...
Учебной части гбоу ао спо «Астраханский государственный политехнический колледж» на 2015/16 учебный год

Псковский государственный политехнический институт iconI. Общие положения
Федеральное государственное бюджетное образовательное учреждение высшего образования «Псковский государственный университет»

Псковский государственный политехнический институт iconЗаконное представительство
Составитель: Волков А. В. – старший преподаватель кафедры гражданского права и процесса, Псковский государственный университет

Псковский государственный политехнический институт iconП рограмма производственной практики
Волжский политехнический институт (филиал) волгоградского государственного технического университета”

Псковский государственный политехнический институт iconОбразец заполнения
Прошу зачислить меня слушателем в фгбоу во «Псковский государственный университет» на обучение по дополнительной общеобразовательной...

Псковский государственный политехнический институт iconПоложение о платном обучении в Государственном образовательном учреждении...
Ания «Оренбургский государственный институт менеджмента», (далее: «огим», «институт»), в соответствии с Федеральным законом «О высшем...

Псковский государственный политехнический институт iconПриема иностранных граждан в фгбоу впо «оренбургский государственный...
Ем иностранных граждан, лиц без гражданства, в том числе соотечественников за рубежом (далее иностранные граждане), поступающих фгбоу...

Псковский государственный политехнический институт iconЗаконодательное регулирование
«Южно – Российский государственный политехнический университет (нпи) имени М. И. Платова»

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск