ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 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.
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД


Яндекс цитирования