TURBO PASCAL |
Новости |
ПРИЛОЖЕНИЕ 5Модуль dosМодуль Dos реализует ряд очень полезных программ операционной системы и обработки файлов. Ни одна из программ модуля Dos не определена стандартом Паскаля и поэтому они размещены в собственном модуле. Для ознакомления с полным описанием операций DOS обращайтесь к техническому руководству по IBM MS-DOS. П.5.1. Константы, типы и переменныеКаждая из констант, типов и переменных, определяемых модулем Dos коротко обсуждены в этом разделе. П.5.1.1. КонстантыП.5.1.1.1. Константы флагов Следующие константы используются для проверки отдельных битов флага в регистре 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-флаг сброшен. П.5.1.1.2. Константы режима файла Эти константы используются процедурами обработки файлов, при открытии и закрытии дисковых файлов. Поля режимов файловых переменных Turbo Pascal будут содержать одно из значений, указанных ниже: fmClosed
$D7B0 fmInput $D7B1 fmOutput
$D7B2 fmInOut $D7B3 П.5.1.1.3. Константы атрибутов файла Эти константы используются для проверки, установки и очистки битов файловых атрибутов в процедурах GetFAttr, SetFAttr, FindFirst, FindNext: ReadOnly
$01 Hidden $02 SysFile $04 VolumeID
$08 Directory $10 Archive $20 AnyFile $3F Эти константы
можно суммировать.
Так,
например,
оператор FindFirst
('*.*', ReadOnly+Directory,S);
будет искать все файлы (*.*) "только для чтения" (ReadOnly) и подкаталоги в текущем каталоге (Directory). Константа AnyFile - это просто сумма всех атрибутов. П.5.1.2. ТипыП.5.1.2.1. Типы файловых записей Определения записей, используемых ‘внутри’ Turbo Pascal, также определены в модуле Dos. FileRec используется для типизированных и не типизированных файлов, а TextRec - внутренний формат файловой переменной типа Тext. Туре {типизированные и не типизированные файлы}
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; П.5.1.2.2. Тип Registers Переменные типа Registers используются процедурами Intr и MSDos для указания содержимого входного значения регистров и проверки выходного содержимого регистров для программного прерывания. Туре
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-ти битовыми регистрами. П.5.1.2.3. Тип DataTime Переменные типа DataTime используются в сочетании с процедурами UnPacTime и PackTime для проверки и создания 4-байтовых упакованных значений даты и времени в процедурах GetFTime, SetFTime, FindFirst и FindNext.
Туре
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. П.5.1.2.4. Тип SearchRec Переменная типа SearchRec используется процедурами FindFirst и FindNext для просмотра каталогов:
Туре
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 резервируется операционной системой и никогда не должно модифицироваться. П.5.1.2.5. Строковые типы для обработки файлов Эти строковые типы используются в процедуре FSplit: DirStr = String[67]; {строка устройства и каталога}
NameStr = String[8];
{строка имени
файла} ExtStr = String[4]; {строка расширения файла} ComStr = String[127]; {командная строка} PathStr = String[79]; {полная строка пути файла} П.5.1.3. ПеременныеП.5.1.3.1. Переменная DosError Переменная DosError используется многими программами в модуле Dos при обработке ошибок.
var DosError : Integer; Значение, запомненное в DosError, представляет собой код ошибки операционной системы. Значение 0 означает "нет ошибки", другие коды означают: 2 файл не найден 3 путь не найден 5 доступ запрещен 6 неверный обработчик 8 нет памяти 10 неправильная среда 11 неправильный формат 18 больше нет файлов П.5.2. Процедуры и функцииП.5.2.1. Процедуры даты и времениGetDate - возвращает текущую дату, установленную в DOS. GetFTime - возвращает дату и время последней записи в файл. GetTime - возвращает текущее время, установленное в DOS. PackTime - преобразует запись в 4 байтовое упакованное значение даты и времени типа longint, используемое процедурой SetFTime. Поля записи DateTime не проверяются на диапазон. SetData - устанавливает текущую дату в DOS. SetFTime -устанавливает время и дату последней записи в файл. SetTime - устанавливает текущее время в DOS. UnPackTime - преобразует 4-х байтовое упакованное значение даты и времени, возвращаемое GetFTime, FindFirst или FindNext в распакованную запись типа DateTime. П.5.2.2. Процедуры обслуживания прерыванийGetIntVeс - возвращает адрес, хранящийся в указанном векторе прерывания. Intr - выполняет указанное программное прерывание. MSDos - выполняет функцию операционной системы. SetIntVec - устанавливает адрес для указанного вектора прерывания. П.5.2.3. Функции статуса дискаDiskFree - возвращает число свободных байт на указанном диске. DiskSize - возвращает полный объем указанного диска в байтах. П.5.2.4. Процедуры обработки файловFindFirst - ищет в указанном или текущем каталоге (справочнике, папке) первый файл, соответствующий заданному имени файла и набору атрибутов. FindNext - возвращает следующий файл, соответствующий имени и атрибутам, указанным в предыдущем вызове FindFrst. GetFAttr - возвращает атрибуты файла. SetFAttr - устанавливает атрибуты файла. FSplit - разбивает имя файла на 3 составные части (справочник, имя файла, расширение).П.5.2.5. Функции обработки файла FExpand - берет имя файла и возвращает полное имя файла (устройство, справочник, имя и расширение). FSearch - ищет файл в списке справочников. П.5.2.6. Процедуры обработки процессовExec - выполняет заданную программу с указанной командной строкой. Keep - завершает программу и оставляет ее в памяти (реализует прерывание "завершить и оставить резидентным" - TSR). SwapVectors - меняет сохраненные вектора прерываний с текущими векторами П.5.2.7. Функция обработки процессовDosExitCode - возвращает код завершения подпроцесса. П.5.2.8. Функции управления средойEnvCount - возвращает число строк, содержащихся в среде DOS. EnvStr - возвращает указанную строку среды. GetEnv - возвращает значение указанной переменной среды. П.5.2.9. Дополнительные процедурыGetCBreak - возвращает состояние проверки Ctrl-Break в DOS. SetCBreak - устанавливает состояние проверки Ctrl-Break в DOS. GetVerify - возвращает состояние флага верификации в DOS. SetVerify - устанавливает состояние флага верификации в DOS. П.5.2.10. Дополнительная функцияDosVersion - возвращает номер версии DOS. ПРИЛОЖЕНИЕ 6СПРАВОЧНЫЙ МАТЕРИАЛ по кодировке символов в Ms dos.Коды ASCIIАмериканский стандартный код для обмена информацией (American Standard Code for Information Interchange - ASCII) - это код, который переводит алфавитные и цифровые символы, знаки и управляющие команды в 7-ми битовый двоичный код (для MS DOS). В таблице П.6.1 показаны печатаемые (32..126) и управляющие (0..31, 127) символы (в десятичной и в шестнадцатеричной системах счисления - соответственно 10сс и 16сс). Таблица П.6.1. Таблица стандартных кодов ASCII
В табл. П.6.2 дана расшифровка управляющих символов (0..31). Здесь и далее приняты следующие условные обозначения: ASC - ASCII- символ, Dec - десятичная система счисления (Decimal), Hex - шестнадцатеричная система счисления (Hexadecimal), Binary - двоичная система счисления. Таблица П.6.2. Управляющие коды ASCIIОбычно эта кодировка символов одинакова для всех IBM PC совместимых компьютеров. Остальные коды (128..255) соответствуют так называемым национальным алфавитам, символам псевдографики и прочим символам, которые, естественно, отличаются для разных стран. В табл. П.6.3 приведены символы, соответствующие альтернативной кодировке ГОСТа для символов кириллицы (русские буквы), псевдографики и прочих символов. Этот стандарт принят в настоящее время для всех компьютеров, поступающих в страны СНГ. Первые 128 символов, как видно, ничем не отличаются от символов, приведенных в табл.П.6.1. Эта таблица взята без изменения из распространенных компьютерных справочников (типа TECH), поэтому вид ее несколько отличается от предыдущей таблицы. Таблица П.6.3. Полная таблица десятичных, шестнадцатеричных и двоичных ASCII - кодов
Продолжение табл. П.6.3.
|
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |