Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru

Глава 16. Модуль Dоs

             С помощью модулей Dos и WinDos реализуется целый  ряд  прог-
        рамм операционной системы и программ обработки файлов. Ни одна из
        программ модуля Dos не определена в стандартном Паскале,  поэтому
        они помещаются в отдельный модуль.

             Более полное  описание операций DOS приведено в руководствах
        по DOS фирмы IBM.

             Основное различие модулей Dos и WinDos состоит  в  том,  что
        процедуры и функции модуля Dos используют стандартные строки Пас-
        каля, а процедуры и функции модуля WinDos - строки с  завершающим
        нулем. Стандартная  строка  Паскаля - это байт длины,  за которым
        следует последовательность символов. Строка с завершающим нулем -
        это последовательность  ненулевых символов с завершающим символом
        NULL (#0).

                   Примечание: Подробнее о различии этих строк  рассказы-
              вается в Главе 18.

             Если вы разрабатываете только программы Windows, используйте
        модуль WinDos.

             Если вы разрабатываете только программы DOS,  то  желательно
        пользоваться в программах модулем Dos,  так как большинство прог-
        рамм Паскаля традиционно работают со  строками  Паскаля.  Однако,
        если вы  разрабатываете  приложения для среды Windows,  то можете
        написать программу,  используемую в  обеих  платформах  -  DOS  и
        Windows, применяя для этого модули WinDos и Strings. Windows тре-
        бует использования строк с завершающим  нулем.  Вы  можете  также
        воспользоваться данными модулями, если у вас есть файл данных Си,
        и вы хотите его конвертировать.  В языке Си используются строки с
        завершающим нулем.


Процедуры и функции модуля Dos

Ниже перечислены процедуры и функции модуля Dos. Чтобы ис- пользовать их, вы должны ссылаться на модуль Dos с помощью опера- тора программы uses. См. также Главу 1 ("Справочник по библиоте- ке") в "Руководстве программиста". Процедуры для работы с датой и временем -------------------T-------------------------------------------- ¦ Процедура ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ GetDate ¦ Возвращает текущую дату, установленную в¦ ¦ ¦ операционной системе. ¦ +------------------+--------------------------------------------+ ¦ GetFTime ¦ Возвращает дату и время последней записи¦ ¦ ¦ файла. ¦ +------------------+--------------------------------------------+ ¦ GetTiме ¦ Возвращает текущее время, установленное в¦ ¦ ¦ операционной системе. ¦ +------------------+--------------------------------------------+ ¦ РackTiме ¦ Преобразует запись DateTiме в четырехбайто-¦ ¦ ¦ вое упакованное символьное представление¦ ¦ ¦ даты и времени длинного целого типа, кото-¦ ¦ ¦ рое используется в процедуре SetTiме. Поля¦ ¦ ¦ записи DateTiме не проверяются на допусти-¦ ¦ ¦ мость границ. ¦ +------------------+--------------------------------------------+ ¦ SetDate ¦ Устанавливает для операционной системы те-¦ ¦ ¦ кущую дату. ¦ +------------------+--------------------------------------------+ ¦ SetFTiме ¦ Устанавливает время и дату последней записи¦ ¦ ¦ файла. ¦ +------------------+--------------------------------------------+ ¦ SetTiме ¦ Устанавливает в операционной системе теку-¦ ¦ ¦ щее время. ¦ +------------------+--------------------------------------------+ ¦ UnpackTiме ¦ Преобразует четырехбайтовое упакованной¦ ¦ ¦ символьное представление даты и времени¦ ¦ ¦ длинного целого типа, возвращаемого проце-¦ ¦ ¦ дурами GetFTiме, FindFirst, FindNext в рас-¦ ¦ ¦ пакованную запись DateTiме. ¦ L------------------+--------------------------------------------- Процедуры и функции обслуживания прерываний -------------------T-------------------------------------------- ¦ Процедура ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ GetIntVес ¦ Возвращает адрес, сохраненный в заданном¦ ¦ ¦ векторе прерываний. ¦ +------------------+--------------------------------------------+ ¦ Intr ¦ Выполняет заданное программное прерывание.¦ +------------------+--------------------------------------------+ ¦ МsDos ¦ Выполняет вызов функции DOS. ¦ +------------------+--------------------------------------------+ ¦ SetIntVес ¦ Устанавливает по заданному адресу заданный¦ ¦ ¦ вектор прерывания. ¦ L------------------+--------------------------------------------- Функции, проверяющие состояние диска -------------------T-------------------------------------------- ¦ Фуннкция ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ DiskFrее ¦ Возвращает число свободных байт на диске в¦ ¦ ¦ заданном дисководе. ¦ +------------------+--------------------------------------------+ ¦ DiskSize ¦ Возвращает полный объем в байтах заданного¦ ¦ ¦ диска. ¦ L------------------+--------------------------------------------- Процедуры обработки файлов -------------------T-------------------------------------------- ¦ Процедура ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ FExpand ¦ Воспринимает имя файла и возвращает полное¦ ¦ ¦ уточненное имя (диск, каталог, расширение).¦ +------------------+--------------------------------------------+ ¦ FSearch ¦ Ищет файл в списке каталогов. ¦ +------------------+--------------------------------------------+ ¦ FindFirst ¦ Производит поиск в заданном (или текущем)¦ ¦ ¦ каталоге записи, содержимое которой совпа-¦ ¦ ¦ дает с заданным именем файла и атрибутами.¦ +------------------+--------------------------------------------+ ¦ FindNext ¦ Возвращает следующую запись, имя файла и¦ ¦ ¦ атрибуты в которой совпадают с теми, кото-¦ ¦ ¦ рые были заданы при предыдущем обращении к¦ ¦ ¦ процедуре FindFirst. ¦ +------------------+--------------------------------------------+ ¦ GetFAttr ¦ Возвращает атрибуты файла. ¦ +------------------+--------------------------------------------+ ¦ SetFAttr ¦ Устанавливает атрибуты файла. ¦ L------------------+--------------------------------------------- Функции управления операционной средой -------------------T-------------------------------------------- ¦ Функция ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ EnvCount ¦ Возвращает число строк, содержащихся в опе-¦ ¦ ¦ рационной среде DOS. ¦ +------------------+--------------------------------------------+ ¦ EnvStr ¦ Возвращает заданную строку операционной¦ ¦ ¦ среды. ¦ +------------------+--------------------------------------------+ ¦ GetEnv ¦ Возвращает значение заданной переменной¦ ¦ ¦ операционной среды. ¦ L------------------+--------------------------------------------- Процедуры управления процессами -------------------T-------------------------------------------- ¦ Процедура ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ Eхесutе ¦ Выполняет заданную программу с указанной¦ ¦ ¦ командной строкой. ¦ +------------------+--------------------------------------------+ ¦ Keep ¦ Сохраняет (прекращает выполнение и сохраня-¦ ¦ ¦ ет в памяти) прекратившую работу программу,¦ ¦ ¦ оставляя ее резидентной в памяти. ¦ +------------------+--------------------------------------------+ ¦ SwapVectors ¦ Меняет местами содержимое сохраненных век-¦ ¦ ¦ торов прерываний и текущих векторов. ¦ L------------------+--------------------------------------------- Прочие процедуры и функции -------------------T-------------------------------------------- ¦Процедура/функция ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ DosVersion ¦ Возвращает номер версии операционной систе-¦ ¦ ¦ мы DOS. ¦ +------------------+--------------------------------------------+ ¦ GetCBreak ¦ Возвращает проверяемое DOS состояние¦ ¦ ¦ Ctrl+Break. ¦ +------------------+--------------------------------------------+ ¦ SetCBreak ¦ Устанавливает проверяемое DOS состояние¦ ¦ ¦ Ctrl+Break. ¦ +------------------+--------------------------------------------+ ¦ GetVerify ¦ Возвращает состояние флага проверки в DOS. ¦ +------------------+--------------------------------------------+ ¦ SetVerify ¦ Устанавливает состояние флага проверки в¦ ¦ ¦ DOS. ¦ L------------------+---------------------------------------------

Константы, типы и переменные модуля Dos

В данном разделе кратко обсуждаются константы, типы и пере- менные, определяемые в модуле Dos. Более детальная информация со- держится в разделе "Константы флагов" (значение FParity) в Главе 1 ("Справочник по библиотеке") "Справочного руководства програм- миста". Группы констант -----------------------------T---------------------------------- ¦ Группа констант ¦ Описание ¦ +----------------------------+----------------------------------+ ¦ Флаги ¦ Используются для проверки отдель-¦ ¦ ¦ ных флагов после вызова функций¦ ¦ ¦ Intr или MsDos. Это флаги:¦ ¦ ¦ FParity, FAuxiliary, FZero,¦ ¦ ¦ FSign, FOverflow, fCarry. ¦ +----------------------------+----------------------------------+ ¦ fmXXXX ¦ Определяет допустимые значения¦ ¦ ¦ поля Mode записи TextRec тексто-¦ ¦ ¦ вого файла: fmClosed, fmInput,¦ ¦ ¦ fmOutput, fmInOut. ¦ +----------------------------+----------------------------------+ ¦ Атрибуты файла ¦ Используются для построения ат-¦ ¦ ¦ рибутов, применяемых в FindFirst,¦ ¦ ¦ GetFAttr и SetFAttr. Это флаги¦ ¦ ¦ ReadOnly, Hidden, SysFile,¦ ¦ ¦ VolumeID, Directory, Archive,¦ ¦ ¦ AnyFile. ¦ L----------------------------+-----------------------------------

Типы

В модуле Dos определяются следующие типы: ---------------------------T------------------------------------ ¦ Тип ¦ Описание ¦ +--------------------------+------------------------------------+ ¦ Тип записи файла ¦ Определения записей, использующие-¦ ¦ ¦ ся в Borland Pascal для внутренних¦ ¦ ¦ целей, описываются также в модуле¦ ¦ ¦ Dos. Тип FilеRес используется как¦ ¦ ¦ для типизованных, так и для нетипи-¦ ¦ ¦ зованных файлов, в то время, как¦ ¦ ¦ TехtRес представляет собой внутрен-¦ ¦ ¦ ний формат переменной текстового¦ ¦ ¦ типа. ¦ +--------------------------+------------------------------------+ ¦ Registers ¦ Переменные регистрового типа приме-¦ ¦ ¦ няются в процедурах Intr и МsDos¦ ¦ ¦ для задания содержимого входного¦ ¦ ¦ регистра и проверки содержимого вы-¦ ¦ ¦ ходного регистра при прерываниях,¦ ¦ ¦ использующихся в программном обес-¦ ¦ ¦ печении. ¦ +--------------------------+------------------------------------+ ¦ DateTime ¦ Переменные типа DateTiме (даты и¦ ¦ ¦ времени) используются в процедурах¦ ¦ ¦ UnраскТiме и РаскТiме для анализа,¦ ¦ ¦ упаковки и построения четырехбайто-¦ ¦ ¦ вого значения, содержащего дату и¦ ¦ ¦ время. Это четырехбайтовое значение¦ ¦ ¦ используется затем в процедурах¦ ¦ ¦ GetFTiме, SetTiме, FindFirst и¦ ¦ ¦ FindNехt. ¦ +--------------------------+------------------------------------+ ¦ SearchRec ¦ Переменные типа SearchRес использу-¦ ¦ ¦ ются в процедурах FindFirst и¦ ¦ ¦ Findnext для просмотра каталогов¦ ¦ ¦ файлов. ¦ +--------------------------+------------------------------------+ ¦ Строковые типы ¦ Эти строковые типы определены в мо-¦ ¦ работы с файлами ¦ дуле Dos и используются для работы¦ ¦ ¦ с именами файлов и маршрутов при¦ ¦ ¦ вызове строковой процедуры FSplit.¦ ¦ ¦ Это типы ComStr, PathStr, DirStr,¦ ¦ ¦ NameStr, ExtStr. ¦ L--------------------------+-------------------------------------

Переменные модуля Dos

Многими подпрограммами модуля Dos для сообщения об ошибке используется переменная DosError.

Процедуры и функции модуля WinDos

Ниже перечислены процедуры и функции модуля WinDos. Чтобы использовать их, вы должны ссылаться на модуль WinDos с помощью оператора программы uses. Процедуры для работы с датой и временем модуля WinDos -------------------T-------------------------------------------- ¦ Процедура ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ GetDate ¦ Возвращает текущую дату, установленную в¦ ¦ ¦ операционной системе. ¦ +------------------+--------------------------------------------+ ¦ GetFTime ¦ Возвращает дату и время последней записи¦ ¦ ¦ файла. ¦ +------------------+--------------------------------------------+ ¦ GetTiме ¦ Возвращает текущее время, установленное в¦ ¦ ¦ операционной системе. ¦ +------------------+--------------------------------------------+ ¦ РackTiме ¦ Преобразует запись DateTiме в четырехбайто-¦ ¦ ¦ вое упакованное символьное представление¦ ¦ ¦ даты и времени длинного целого типа, кото-¦ ¦ ¦ рое используется в процедуре SetTiме. ¦ +------------------+--------------------------------------------+ ¦ SetDate ¦ Устанавливает для операционной системы те-¦ ¦ ¦ кущую дату. ¦ +------------------+--------------------------------------------+ ¦ SetFTiме ¦ Устанавливает время и дату последней записи¦ ¦ ¦ файла. ¦ +------------------+--------------------------------------------+ ¦ SetTiме ¦ Устанавливает в операционной системе теку-¦ ¦ ¦ щее время. ¦ +------------------+--------------------------------------------+ ¦ UnpackTiме ¦ Преобразует четырехбайтовое упакованной¦ ¦ ¦ символьное представление даты и времени¦ ¦ ¦ длинного целого типа, возвращаемого проце-¦ ¦ ¦ дурами GetFTiме, FindFirst, FindNext в рас-¦ ¦ ¦ пакованную запись DateTiме. ¦ L------------------+--------------------------------------------- Процедуры обслуживания прерываний модуля WinDos -------------------T-------------------------------------------- ¦ Процедура ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ GetIntVес ¦ Возвращает адрес, сохраненный в заданном¦ ¦ ¦ векторе прерываний. ¦ +------------------+--------------------------------------------+ ¦ Intr ¦ Выполняет заданное программное прерывание.¦ +------------------+--------------------------------------------+ ¦ МsDos ¦ Выполняет вызов функции DOS. ¦ +------------------+--------------------------------------------+ ¦ SetIntVес ¦ Устанавливает по заданному адресу заданный¦ ¦ ¦ вектор прерывания. ¦ L------------------+--------------------------------------------- Функции модуля WinDos, проверяющие состояние диска -------------------T-------------------------------------------- ¦ Фуннкция ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ DiskFrее ¦ Возвращает число свободных байт на диске в¦ ¦ ¦ заданном дисководе. ¦ +------------------+--------------------------------------------+ ¦ DiskSize ¦ Возвращает полный объем в байтах заданного¦ ¦ ¦ диска. ¦ L------------------+--------------------------------------------- Процедуры работы с файлами модуля WinDos -------------------T-------------------------------------------- ¦ Процедура ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ FileExpand ¦ Воспринимает имя файла и возвращает полное¦ ¦ ¦ уточненное имя (диск, каталог, расширение).¦ +------------------+--------------------------------------------+ ¦ FileSearch ¦ Ищет файл в списке каталогов. ¦ +------------------+--------------------------------------------+ ¦ FileSplit ¦ Разбивает полное имя файла на три компонен-¦ ¦ ¦ та (диск, каталог, имя и расширение). ¦ +------------------+--------------------------------------------+ ¦ FindFirst ¦ Производит поиск в заданном (или текущем)¦ ¦ ¦ каталоге записи, содержимое которой совпа-¦ ¦ ¦ дает с заданным именем файла и атрибутами.¦ +------------------+--------------------------------------------+ ¦ FindNext ¦ Возвращает следующую запись, имя файла и¦ ¦ ¦ атрибуты в которой совпадают с теми, кото-¦ ¦ ¦ рые были заданы при предыдущем обращении к¦ ¦ ¦ процедуре FindFirst. ¦ +------------------+--------------------------------------------+ ¦ GetFAttr ¦ Возвращает атрибуты файла. ¦ +------------------+--------------------------------------------+ ¦ SetFAttr ¦ Устанавливает атрибуты файла. ¦ L------------------+--------------------------------------------- Процедуры и функции для работы с каталогами -------------------T-------------------------------------------- ¦ Процедура/функция¦ Описание ¦ +------------------+--------------------------------------------+ ¦ CreateDir ¦ Создает новый подкаталог. ¦ +------------------+--------------------------------------------+ ¦ GetCurDir ¦ Возвращает текущий каталог на заданном дис-¦ ¦ ¦ ке. ¦ +------------------+--------------------------------------------+ ¦ RemoveDir ¦ Удаляет подкаталог. ¦ +------------------+--------------------------------------------+ ¦ SetCurDir ¦ Изменяет текущий каталог. ¦ L------------------+--------------------------------------------- Процедуры и функции обслуживания прерываний модуля WinDos -------------------T-------------------------------------------- ¦ Процедура ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ GetArgCount ¦ Возвращает число параметров, переданных¦ ¦ ¦ программе в командной строке. ¦ +------------------+--------------------------------------------+ ¦ GetArgStr ¦ Возвращает заданный аргумент командной¦ ¦ ¦ строки. ¦ +------------------+--------------------------------------------+ ¦ GetEnvVar ¦ Возвращает указатель на значение заданной¦ ¦ ¦ переменной операционной среды. ¦ L------------------+--------------------------------------------- Прочие процедуры и функции модуля WinDos -------------------T-------------------------------------------- ¦Процедура/функция ¦ Описание ¦ +------------------+--------------------------------------------+ ¦ DosVersion ¦ Возвращает номер версии операционной систе-¦ ¦ ¦ мы DOS. ¦ +------------------+--------------------------------------------+ ¦ GetCBreak ¦ Возвращает проверяемое DOS состояние¦ ¦ ¦ Ctrl+Break. ¦ +------------------+--------------------------------------------+ ¦ SetCBreak ¦ Устанавливает проверяемое DOS состояние¦ ¦ ¦ Ctrl+Break. ¦ +------------------+--------------------------------------------+ ¦ SetVerify ¦ Устанавливает состояние флага проверки в¦ ¦ ¦ DOS. ¦ L------------------+---------------------------------------------

Константы, типы и переменные модуля WinDos

В данном разделе кратко обсуждаются константы, типы и пере- менные, определяемые в модуле WinDos. Более детальная информация содержится в разделе "Константы флагов" (значение FParity) в Гла- ве 1 ("Справочник по библиотеке") "Справочного руководства прог- раммиста". Группы констант -----------------------------T---------------------------------- ¦ Группа констант ¦ Описание ¦ +----------------------------+----------------------------------+ ¦ Флаги ¦ Используются для проверки отдель-¦ ¦ ¦ ных флагов после вызова функций¦ ¦ ¦ Intr или MsDos. Это флаги:¦ ¦ ¦ FParity, FAuxiliary, FZero,¦ ¦ ¦ FSign, FOverflow, fCarry. ¦ +----------------------------+----------------------------------+ ¦ fmXXXX ¦ Определяет допустимые значения¦ ¦ ¦ поля Mode записи TextRec тексто-¦ ¦ ¦ вого файла: fmClosed, fmInput,¦ ¦ ¦ fmOutput, fmInOut. ¦ +----------------------------+----------------------------------+ ¦ faXXXX ¦ Используются для построения ат-¦ ¦ ¦ рибутов, их проверки и изменения¦ ¦ ¦ в процедурах и функциях работы с¦ ¦ ¦ файлами. Это константы faHidden,¦ ¦ ¦ faSysFile, faVolumeID, faDirecto-¦ ¦ ¦ ry, faArchive, faAnyFile. ¦ +----------------------------+----------------------------------+ ¦ fsXXXX ¦ Максимальные длины компонентов¦ ¦ ¦ имени файла, используемых в под-¦ ¦ ¦ программах FileSearch и File-¦ ¦ ¦ Expand. Это константы: fsPathNa-¦ ¦ ¦ me, fsDirectory, fsFileName,¦ ¦ ¦ fsExtension. ¦ +----------------------------+----------------------------------+ ¦ fcXXXX ¦ Флаги, возвращаемые функцией¦ ¦ ¦ FileSplit: fcExtension, fcFile-¦ ¦ ¦ Name, fcDirectory, fcWildcards. ¦ L----------------------------+-----------------------------------

Типы

В модуле WinDos определяются следующие типы: ---------------------------T------------------------------------ ¦ Тип ¦ Описание ¦ +--------------------------+------------------------------------+ ¦ Тип записи файла ¦ Определения записей, использующие-¦ ¦ ¦ ся в Borland Pascal для внутренних¦ ¦ ¦ целей, описываются также в модуле¦ ¦ ¦ Dos. Тип TFilеRес используется как¦ ¦ ¦ для типизованных, так и для нетипи-¦ ¦ ¦ зированных файлов, в то время, как¦ ¦ ¦ TTехtRес представляет собой внут-¦ ¦ ¦ ренний формат переменной текстового¦ ¦ ¦ типа. ¦ +--------------------------+------------------------------------+ ¦ TRegisters ¦ Переменные регистрового типа приме-¦ ¦ ¦ няются в процедурах Intr и МsDos¦ ¦ ¦ для задания содержимого входного¦ ¦ ¦ регистра и проверки содержимого вы-¦ ¦ ¦ ходного регистра при прерываниях,¦ ¦ ¦ использующихся в программном обес-¦ ¦ ¦ печении. ¦ +--------------------------+------------------------------------+ ¦ TDateTime ¦ Переменные типа TDateTiме (даты и¦ ¦ ¦ времени) используются в процедурах¦ ¦ ¦ UnраскТiме и PаскТiме для анализа,¦ ¦ ¦ упаковки и построения четырехбайто-¦ ¦ ¦ вого значения, содержащего дату и¦ ¦ ¦ время. Это четырехбайтовое значение¦ ¦ ¦ используется затем в процедурах¦ ¦ ¦ GetFTiме, SetTiме, FindFirst и¦ ¦ ¦ FindNехt. ¦ +--------------------------+------------------------------------+ ¦ TSearchRec ¦ Переменные типа TSearchRес исполь-¦ ¦ ¦ зуются в процедурах FindFirst и¦ ¦ ¦ Findnext для просмотра каталогов¦ ¦ ¦ файлов. ¦ L--------------------------+-------------------------------------

Переменные модуля WinDos

Многими подпрограммами модуля WinDos для сообщения об ошибке используется переменная DosError.

[ Назад | Оглавление | Далее ]










helloworld.ru © 2001-2021
Все права защищены