|
Часть 13
ГЛАВА 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
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
|