ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 14 Глава 11. Модуль WinDоs С помощью модуля WinDos реализуется целый ряд программ операционной системы и программ обработки файлов. Ни одна из программ модуля WinDos не определена в стандартном Паскале, поэтому они помещаются в отдельный модуль. Более полное описание операций DOS приведено в руководствах по DOS фирмы IBM. Константы, типы и переменные В данном разделе кратко обсуждаются константы, типы и переменные, определяемые в модуле WinDos. Более детальная информация содержится в описании процедур и функций, которые зависят от этих объектов, в Главе 24 "Библиотека исполняющей системы". Константы Константы флагов После обращения к процедурам Inrt или МsDos для проверки отдельных бит в регистре флагов используются следующие константы: ДДДДДДДДДДДДДДДДДДДДДДДДДДДД Константа Значение ДДДДДДДДДДДДДДДДДДДДДДДДДДДД fCarry $0001 fParity $0004 fAuxilliary $0010 fZero $0040 fSign $0080 fOverflow $0800 ДДДДДДДДДДДДДДДДДДДДДДДДДДДД Например, если R является записью, содержащей регистр, то проверки: R.Flags and fCarry <> 0 R.Flags and fZero = 0 принимают значение Truе, когда, соответственно, установлен флаг переноса (Carry) и сброшен флаг Zero. Константы режима файла Эти константы используются в процедурах обработки файлов при открытии и закрытии файлов на диске. Поля режима файловых переменных Турбо Паскаля будут содержать одно из приведенных ниже значений: ДДДДДДДДДДДДДДДДДДДДДДДДДДДД Константа Значение ДДДДДДДДДДДДДДДДДДДДДДДДДДДД fmClosed $D780 fmInput $D781 fmOutput $D782 fmInOut $D783 ДДДДДДДДДДДДДДДДДДДДДДДДДДДД Константы атрибута файла Эти константы используются для проверки, установки и очистки бит атрибута файлов при использовании процедур GetFAttr, SetFAttr, FindFirst и FindNext: ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Константа Значение ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД ReadOnly $01 доступ только по чтению Hidden $02 "скрытый" файл SysFile $04 системный файл VolumeID $08 метка тома Directory $10 каталог Achive $20 признак архивизации AnyFile $3F прочий файл ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Эти константы являются аддитивными, то есть оператор: FindFirst('*.*',ReadOnly + Directory, S); приведет к поиску всех обычных файлов, а также файлов, доступных только по чтению, в текущем каталоге файлов. Константа AnyFilе (любой файл) - это просто сумма всех атрибутов. Компоненты строки имени файла Данные константы задают мамксимальные размеры компонентов строки имени файла, используемые в функциях FileSearch и FileExpand. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Константа Значение ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД fsPathName 79 имя маршрута fsDirectory 67 имя каталога fsFileName 8 имя файла fsExtension 4 расширение имени файла ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Флаги, возвращаемые для FileSplit Данные флаги возврата используются только функцией FileSplit. Возвращаемое значение является комбинацией битовых масок fcDirectory, fcFileName и fcExtension, что показывает, какие компоненты присутствовали в маршруте. Если имя файла или расширение с одержат трафаретные символы (* или ?), то в возвращаемом значении устанавливается флаг fcWildcards. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Константа Значение ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД fcWildcards $0008 трафаретные символы fcDirectory $0004 имя каталога fcFileName $0002 имя файла fcExtension $0001 расширение имени файла ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Типы Тип TFileRec Определения записей, использующиеся в Турбо Паскале для внутренних целей, описываются также в модуле WinDos. Тип TFilеRес используется как для типизованных, так и для нетипизованных файлов, в то время, как TTехtRес представляет собой внутренний форм ат переменной текстового типа. type { Типизованные и нетипизованные файлы } TFileRec = record Handle: Word; Mode: Word; RecSize: Word; Private: array[1..26] of Byte; UserData: array[1..16] of Byte; Name: array[0..79] of Char; end; { запись Textfile } PTextBuf = ^TTextBuf; TTextBuf = array[0..127] of Char; TTextRec = record Handle: Word; Mode: Word; BufSize: Word; Private: Word; BufPos: Word; BufPtr: ^TextBuf; OpenProc: Pointer; InOutProc: Pointer; FlushProc: Pointer; CloseProc: Pointer; UserData: array[1..16] of Byte; Name: array[0..79] of Char; Buffer: TTextBuf; end; Регистровый тип (TRegisters) Переменные регистрового типа применяются в процедурах Intr и МsDos для задания содержимого входного регистра и проверки содержимого выходного регистра при прерываниях, использующихся в программном обеспечении. type TRegisters = record case integer of 0: (AX,BX,CX,DX,BP,SI,DS,ES,Flags: word); 1: (AL,AH,BL,BH,CL,CH,L,DH: byte); end; Обратите внимание на использование оператора варианта для того, чтобы отметить запись из восьмибитовых регистров, находящихся в начале шестнадцатибитовой записи. Тип даты и времени (TDateTime) Переменные типа TDateTiме (даты и времени) используются в процедурах UnраскТiме и РаскТiме для анализа, упаковки и построения четырехбайтового значения, содержащего дату и время. Это четырехбайтовое значение используется затем в процедурах GetFTiме, SetTiме, FindFirst и FindNехt. type TDateTime = record Year,Month,Day,Hour,Min,Sec: integer; end; Допустимыми диапазонами являются: для переменной Year (год) - с 1980 по 2099, для переменной Моnth (месяц) - с 1 по 12, для переменной Dаy (число) - с 1 по 31, для переменной Ноur (час) - от 0 до 23, для переменной Мin (минута) - от 0 до 59, для пер еменной Sес (секунда) - от 0 до 59. Тип TSearchRec Переменные типа TSearchRес используются в процедурах FindFirst и Findnext для просмотра каталогов файлов. type TSearchRec = record Fill: array[1..2] of byte; Attr: byte; Time: longint; Size: longint; Name: string[12]; end; Информация по каждому из найденных с помощью одной из этих процедур файлов помещается опять в переменную SearchRес. Поле Attr содержит атрибуты файла (построенные из констант атрибута файла), поле Tiме содержит дату и время создания файла в упакован ном формате (для распаковки содержимого этого поля можно использовать процедуру UnpackTiме), поле Sizе содержит размер файла в байтах, а поле Nаме содержит его имя. Поле Fill в зарезервировано DOS и не должно изменяться. Переменные Переменная DosError Переменная Doserror используется во многих программах, работающих с модулем WinDos, для того, чтобы получить информацию об ошибках. var DosError: integer; В переменной Doserror запоминаются коды ошибок DOS. Значение 0 указывает на отсутствие ошибки. Другие возможные коды ошибок включают в себя: ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Код ошибки DOS Значение ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД 2 файл не найден; 3 маршрут доступа не найден; 5 доступ отвергнут; 6 недопустимый описатель; 8 недостаточно памяти; 10 недопустимая программная среда; 11 неверный формат; 18 файлы отсутствуют; ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Процедуры и функции Процедуры для работы с датой и временем ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Процедура Описание ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД GetDate Возвращает текущую дату, установленную в операционной системе. GetFTime Возвращает дату и время последней записи файла. GetTiме Возвращает текущее время, установленное в операционной системе. РackTiме Преобразует запись DateTiме в четырехбайтовое упакованное символьное представление даты и времени длинного целого типа, которое используется в процедуре SetTiме. Поля записи DateTiме не проверяются на допустимость границ. SetDate Устанавливает для операционной системы текущую дату. SetFTiме Устанавливает время и дату последней записи файла. SetTiме Устанавливает в операционной системе текущее время. UnpackTiме Преобразует четырехбайтовое упакованное символьное представление даты и времени длинного целого типа, возвращаемого процедурами GetFTiме, FindFirst, FindNext в распакованную запись DateTiме. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Процедуры обслуживания прерываний ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Процедура Описание ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД GetIntVес Возвращает адрес, сохраненный в заданном векторе прерываний. Intr Выполняет заданное программное прерывание. МsDos Выполняет вызов функции DOS. SetIntVес Устанавливает по заданному адресу заданный вектор прерывания. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Функции, проверяющие состояние диска ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Функция Описание ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД DiskFrее Возвращает число свободных байт на диске в заданном дисководе. DiskSize Возвращает полный объем в байтах заданного диска. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Процедуры обработки файлов ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Процедура Описание ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД FindFirst Производит поиск в заданном (или текущем) каталоге записи, содержимое которой совпадает с заданным именем файла и атрибутами. FindNext Возвращает следующую запись, имя файла и атрибуты в которой совпадают с теми, которые были заданы при предыдущем обращении к процедуре FindFirst. GetFAttr Возвращает атрибуты файла. SetFAttr Устанавливает атрибуты файла. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Функции обработки файлов ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Функция Описание ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД FileSplit Разбивает имя файла на три составных компонента (каталог, имя файла, расширение). FExpand Воспринимает имя файла и возвращает полное уточненное имя (диск, каталог, расширение). FSearch Ищет файл в списке каталогов. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Процедуры работы с каталогами ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД CreateDir Создает новый подкаталог. RemoveDir Удаляет подкаталог. SetCurDir Изменяет текущий каталог. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Функции работы с каталогами ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД GetCurDir Возвращает текущий каталог на заданном диске ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Функции управления операционной средой ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Функция Описание ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД GetArgCount Возвращает число параметров, переданных программе в командной строке. GetArgStr Возвращает заданную строку операционной среды. GetEnvVar Возвращает указатель на значение заданной переменной операционной среды. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Прочие процедуры ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Процедура Описание ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД GetCBreak Возвращает проверяемое DOS состояние Ctrl+Break. SetCBreak Устанавливает проверяемое DOS состояние Ctrl+Break. GetVerify Возвращает состояние флага проверки в DOS. SetVerify Устанавливает состояние флага проверки в DOS. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Прочие функции ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Функция Описание ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД DosVersion Возвращает номер версии операционной системы DOS. ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД |