TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

ПРИЛОЖЕНИЕ  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

10сс       16сс    Симв.

10сс       16сс    Симв.

10сс       16сс    Симв.

10сс       16сс    Симв.

 0               0   

32             20       

64             40         @

96             60        

 1               1

33             21           !

65             41          A

97             61         a

 2               2                

34             22           "

66             42          B

98             62         b

 3               3                       

35             23           #

67              43         C             

99             63         c             

 4               4                       

36             24           $

68              44         D               

100           64         d              

 5               5                       

37             25           %

69              45         E               

101           65         e              

 6               6                      

38             26           &

70              46         F             

102           66         f             

 7               7                       

39             27           '

71              47         G              

103           67         g              

 8               8                       

40             28            (

72              48         H              

104           68          h             

 9               9                       

41             29             )

73              49         I              

105           69          i             

10             A                       

42             2A           *

74             4A         J             

106           6A         j              

11             B

43             2B           +

75             4B          K

107           6B         k

12             C                

44             2C           ,

76             4C          L      

108           6C         l       

13             D                       

45             2D           -

77             4D          M             

109           6D        m              

14             E                        

46             2E           .

78             4E           N            

110           6E         n              

15             F                       

47             2F           /

79             4F           O            

111           6F         o              

16             10                      

48             30           0

80             50            P          

112           70         p            

17             11                       

49             31           1

81             51           Q            

113           71         q             

18             12                       

50             32           2

82             52           R           

114           72         r              

19             13                       

51             33           3

83             53           S            

115           73         s              

20             14                       

52             34           4

84             54           T            

116           74         t              

21             15

53             35           5

85             55           U

117           75        u

22             16                

54             36           6    

86             56           V     

118           76        v        

23             17                       

55             37           7            

87             57          W            

119           77        w               

24             18                     

56             38           8          

88             58          X           

120           78        x             

25             19                     

57             39           9          

89             59          Y          

121           79        y            

26             1A                      

58             3A          :            

90             5A         Z             

122           7A       z               

27             1B                       

59             3B           ;            

91             5B         [              

123           7B       {                

28             1C                      

60             3C          <           

92             5C           \           

124           7C         |              

29             1D                      

61             3D          =            

93             5D            ]          

125           7D         }             

30             1E                       

62             E             >           

94             5E            ^           

126           7E         ~              

31             1F

63             3F           ?

95             5F            _

127           7F

 

В табл. П.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.

 

 

 

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz