|
|||||||||||||||||||
|
ГЛАВА 11. МОДУЛЬ DOSМодуль Dos реализует ряд очень полезных программ операционной системы и обработки файлов. Ни одна из программ модуля Dos не определена стандартом Паскаля и поэтому они размещены в собственном модуле Для полного описания операций DOS обращайтесь к техническому руководству по IBM DOS
Константы, типы и переменныеКаждая из констант, типов и переменных, определяемых модулем Dos коротко обсуждены в этом разделе. Для более детальной информации смотри описание процедур и функций в Справочной руководстве по библиотеке
КонстантыКонстанты флаговСледующие константы используются для проверки отдельных битов флага в регистре Flags после вызова Intr или MSDOS: ──────────────────────── константа значение ──────────────────────── FCarry $0001 FParity $0004 FAuxiliary $0010 FZero $0040 FSign $0080 FOverFlow $0800 ──────────────────────── Например, если R - запись типа регистр, то тест R.Flags and FCarry <> 0 R.Flags and FZero = 0 равен true соответственно, если Carry флаг установлен и если Zero флаг сброшен Константы режима файлаЭти константы используются процедурами обработки файлов, при открытии и закрытии дисковых файлов. Поля режимов файловых переменных Turbo Pascal будут содержать одно из значений, указанных ниже: ──────────────────────── константа значение ──────────────────────── fmClosed $D7B0 fmInput $D7B1 fmOutput $D7B2 fmInOut $D7B3 ──────────────────────── Константы атрибутов файлаЭти константы используются для проверки, установки и очистки битов файловых атрибутов в процедурах GetFAttr, SetFAttr, FindFirst, FindNext: ──────────────────────── константа значение ──────────────────────── ReadOnly $01 Hidden $02 SysFile $04 VolumeID $08 Directory $10 Archive $20 AnyFile $3F ──────────────────────── Эти константы можно суммировать, так, например, оператор FindFirst ('*.*', ReadOnly+Directory,S); будет искать файлы "только для чтения" и подсправочники в текущем справочнике. Константа AnyFile - это просто сумма всех атрибутов
ТипыТипы файловых записейОпределения записей, используемых внутренне Turbo Pascal, также определены в модуле Dos. FileRec используется для типированных и нетипированных файлов, а TextRec - внутренний формат файловой переменной типа Тext type {типированные и нетипированные файлы} FileRec = record Handle : Word; Mode : Word; RecSize : Word; Private : array [1..6] of Byte; UserData : array [1..16] of Byte; Name : array [0..79] of Char; end; {запись для текстовых файлов} TextBuf = array [0..127] of Char; TextRec = record Handle : Word; Mode : Word; BufSize : Word; Private : Word; BufPos : Word; BufEnd : Word; BufPtr : ^TextBuf; OpenFunc : Pointer; InOutFunc : Pointer; FlushFunc : Pointer; CloseFunc : Pointer; UserData : array [1..16] of Byte; Name : array [0..79] of Char; Buffer : TextBuf; end; Тип RegistersПеременные типа Registers используются процедурами Intr и MSDos для указания содержимого входного значения регистров и проверки выходного содержимого регистров для программного прерывания type 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; Заметим, что можно пользоваться одновременно и 8-ми и 16-ти битовыми регистрами Тип DataTimeПеременные типа DataTime используются в сочетании с процедурами UnpacTime и PackTime для проверки и создания 4-байтовых упакованных значений даты и времени в процедурах GetFTime, SetFTime, FindFirst и FindNext type DataTime = record Year, Month, Day, Hour, Min, Sec: Integer; end; Дипазон допустимых значений:Year 1980..2099, Month 1..12, Day 1..31, Hour 0..23, Min 0..59, Sec 0..59 Тип SearchRecПеременная типа SearchRec используется процедурами FindFirst и FindNext для просмотра справочников type SearchReс = record File: array[1..21] of Byte; Attr: Byte; Time: Longint; Size: Longint; Name: String[12]; end; Информация, найденная для каждого файла одной из этих процедур, возвращается в SearchRec. Поле Attr содержит атрибуты файла (сформировано из констант атрибутов ), Time содержит упакованные время и дату (используйте UnpackTime для распаковки), Size содержит размер файла в байтах и Name содержит имя файла. Поле Fill резервируется операционной системой и никогда не должно модифицироваться. Строковые типы обработки файловЭти строковые типы используются в процедуре FSplit: DirStr = String[67]; {строка устройства и справочника} NameStr = String[8]; {строка имени файла} ExtStr = String[4]; {строка расширения файла} ComStr = String[127]; {командная строка} PathStr = String[79]; {полная строка пути файла} ПеременныеПеременная DosErrorПеременная DosError используется многими программами в модуле Dos для указания ошибок var DosError : Integer; Значение, запомненое в DosError, представляет собой код ошибки операционной системы. Значение 0 означает "нет ошибки", другие коды означают: ───────────────────────────────────── код ошибки DOS значение ───────────────────────────────────── 2 файл не найден 3 путь не найден 5 доступ запрещен 6 неверный обработчик 8 нет памяти 10 неправильная среда 11 неправильный формат 18 больше нет файлов ─────────────────────────────────────
Процедуры и функцииПроцедуры даты и времени─────────────────────────────────────────────────────────────────── процедура описание ─────────────────────────────────────────────────────────────────── GetDate Возвращает текущую дату, установленную в DOS GetFTime Возвращает дату и время последней записи в файл GetTime Возвращает текущее время, установленное в DOS PackTime Преобразует запись в 4 байтовое упакованное значение даты и времени типа longint, используемое процедурой SetFTime. Поля записи DateTime не проверяются на диапазон SetData Устанавливает текущую дату в DOS SetFTime Устанавливает время и дату последней записи в файл SetTime Устанавливает текущее время в DOS UnpackTime Преобразует 4-х байтовое упакованное значение даты и времени, возвращаемое GetFTime, FindFirst или FindNext в распакованную запись типа DateTime ─────────────────────────────────────────────────────────────────── Процедуры обслуживания прерываний─────────────────────────────────────────────────────────────────── процедура описание ─────────────────────────────────────────────────────────────────── GetIntVeс Возвращает адрес, хранящийся в указанном векторе прерывания Intr Выполняет указанное программное прерывание MSDos Выполняет функцию операционной системы SetIntVec Устанавливает адрес для указанного вектора прерывания ─────────────────────────────────────────────────────────────────── Функция статуса диска─────────────────────────────────────────────────────────────────── функция описание ─────────────────────────────────────────────────────────────────── DiskFree Возвращает число свободных байт на указанном диске DiskSize Возвращает полный объем указанного диска в байтах ─────────────────────────────────────────────────────────────────── Процедуры обработки файлов─────────────────────────────────────────────────────────────────── процедура описание ─────────────────────────────────────────────────────────────────── FindFirst Ищет в указанном или текущем справочнике первый файл, соответствующий заданному имени файла и набору атрибутов FindNext Возвращает следующий файл,соответствующий имени и атрибутам, указанным в предыдущем вызове FindFrst GetFAttr Возвращает атрибуты файла SetFAttr Устанавливает атрибуты файла FSplit Разбивает имя файла на 3 составные части (справочник, имя файла, расширение) ─────────────────────────────────────────────────────────────────── Функции обработки файла─────────────────────────────────────────────────────────────────── функция описание ─────────────────────────────────────────────────────────────────── FExpand Берет имя файла и возвращает полное имя файла (устройство, справочник, имя и расширение) FSearch Ищет файл в списке справочников ─────────────────────────────────────────────────────────────────── Процедуры обработки процессов─────────────────────────────────────────────────────────────────── процедура описание ─────────────────────────────────────────────────────────────────── Exec Выполняет заданную программу с указанной командной строкой Keep Завершает программу и оставляет ее в памяти (реализует прерывание "завершить и оставить резидентным"- TSR) SwapVectors Меняет сохраненные вектора прерываний с текущими векторами ─────────────────────────────────────────────────────────────────── Функции обработки процессов─────────────────────────────────────────────────────────────────── функция описание ─────────────────────────────────────────────────────────────────── DosExitCode Возвращает код завершения подпроцесса ─────────────────────────────────────────────────────────────────── Функции управления средой─────────────────────────────────────────────────────────────────── функция описание ─────────────────────────────────────────────────────────────────── EnvCount Возвращает число строк, содержащихся в среде DOS EnvStr Возвращает указанную строку среды GetEnv Возвращает значение указанной переменной среды ─────────────────────────────────────────────────────────────────── Дополнительные процедуры─────────────────────────────────────────────────────────────────── процедура описание ─────────────────────────────────────────────────────────────────── GetCBreak Возвращает состояние проверки Ctrl-Break в DOS SetCBreak Устанавливает состояние проверки Ctrl-Break в DOS GetVerify Возвращает состояние флага верификации в DOS SetVerify Устанавливает состояние флага верификации в DOS ─────────────────────────────────────────────────────────────────── Дополнительные функции─────────────────────────────────────────────────────────────────── функция описание ─────────────────────────────────────────────────────────────────── DosVersion Возвращает номер версии DOS ─────────────────────────────────────────────────────────────────── Предыдущая страница | Следующая страница
|
|
Web дизайн: Бурлаков Михаил
Web программирование: Бурлаков Михаил