Руководство по языку B.Pascal 7

       

Предописанные переменные


Кроме процедур и функций в модуле System предусмотрен ряд предописанных переменных. Их перечень зависит от библиотеки ис- полняющей системы, к которой относится модуль System.

Следующие переменные описываются в модуле System библиотеки TURBO.TPL - библиотеке исполняющей системы для приложений реаль- ного режима DOS.

----------------T----------------T------------------------------ ¦ Переменная ¦ Тип ¦ Описание ¦ +---------------+----------------+------------------------------+ ¦ ErrorAddr ¦ Pointer ¦ адрес ошибки этапа выполне- ¦ ¦ ¦ ¦ ния ¦ +---------------+----------------+------------------------------+ ¦ ExitProc ¦ Pointer ¦ процедура выхода ¦ +---------------+----------------+------------------------------+ ¦ ExitCode ¦ Integer ¦ код выхода ¦ +---------------+----------------+------------------------------+ ¦ FileMode ¦ Byte ¦ режим открытия файла ¦ +---------------+----------------+------------------------------+ ¦ FreeList ¦ Pointer ¦ список свободных блоков ди- ¦ ¦ ¦ ¦ намически распределяемой об- ¦ ¦ ¦ ¦ ласти памяти ¦ +---------------+----------------+------------------------------+ ¦ FreeZero ¦ Pointer ¦ должен быть равен 0 ¦ +---------------+----------------+------------------------------+ ¦ HeapOrg ¦ Pointer ¦ начало динамически распреде- ¦ ¦ ¦ ¦ ляемой области ¦ +---------------+----------------+------------------------------+ ¦ HeapPtr ¦ Pointer ¦ указатель динамически рас- ¦ ¦ ¦ ¦ пределяемой области ¦ +---------------+----------------+------------------------------+ ¦ HeapError ¦ Pointer ¦ функция ошибки динамически ¦ ¦ ¦ ¦ распределяемой области памя- ¦ ¦ ¦ ¦ ти ¦ +---------------+----------------+------------------------------+ ¦ Input ¦ Text ¦ стандартный файл ввода ¦ +---------------+----------------+------------------------------+ ¦ InOutRes ¦ Integer ¦ буфер результата операции ¦ ¦ ¦ ¦ ввода-вывода ¦ +---------------+----------------+------------------------------+ ¦ Output ¦ Text ¦ стандартный файл вывода ¦ +---------------+----------------+------------------------------+ ¦ OvrCodeList ¦ Word ¦ список сегментов оверлейного ¦ ¦ ¦ ¦ кода ¦ +---------------+----------------+------------------------------+ ¦ OvrDebugPtr ¦ Pointer ¦ используется при отладке ¦ ¦ ¦ ¦ оверлеев ¦ +---------------+----------------+------------------------------+ ¦ OvrDosHandle ¦ Word ¦ описатель оверлея DOS ¦ +---------------+----------------+------------------------------+ ¦ OvrEmsHandle ¦ Word ¦ описатель оверлея EMS ¦ +---------------+----------------+------------------------------+ ¦ OvrHeapEnd ¦ Word ¦ конец оверлейного буфера ¦ +---------------+----------------+------------------------------+ ¦ OvrHeapOrg ¦ Word ¦ начало оверлейного буфера ¦ +---------------+----------------+------------------------------+ ¦ OvrHeapPtr ¦ Word ¦ указатель оверлейного буфера ¦ +---------------+----------------+------------------------------+ ¦ OvrHeapSize ¦ Word ¦ начальный размер оверлейного ¦ ¦ ¦ ¦ буфера ¦ +---------------+----------------+------------------------------+ ¦ OvrLoadList ¦ Word ¦ список загруженных оверлеев ¦ +---------------+----------------+------------------------------+ ¦ PrefixSeg ¦ Word ¦ префикс программного сегмен- ¦ ¦ ¦ ¦ та ¦ +---------------+----------------+------------------------------+ ¦ RandSeed ¦ Longint ¦ случайное число (генериру- ¦ ¦ ¦ ¦ ется датчиком случайных чи- ¦ ¦ ¦ ¦ сел) ¦ +---------------+----------------+------------------------------+ ¦ SaveInt00 ¦ Pointer ¦ сохраненное прерывание $00 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt02 ¦ Pointer ¦ сохраненное прерывание $02 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt1B ¦ Pointer ¦ сохраненное прерывание $1B ¦ +---------------+----------------+------------------------------+ ¦ SaveInt23 ¦ Pointer ¦ сохраненное прерывание $23 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt24 ¦ Pointer ¦ сохраненное прерывание $24 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt34 ¦ Pointer ¦ сохраненное прерывание $34 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt35 ¦ Pointer ¦ сохраненное прерывание $35 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt36 ¦ Pointer ¦ сохраненное прерывание $36 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt37 ¦ Pointer ¦ сохраненное прерывание $37 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt38 ¦ Pointer ¦ сохраненное прерывание $38 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt39 ¦ Pointer ¦ сохраненное прерывание $39 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3A ¦ Pointer ¦ сохраненное прерывание $3A ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3B ¦ Pointer ¦ сохраненное прерывание $3B ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3C ¦ Pointer ¦ сохраненное прерывание $3C ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3D ¦ Pointer ¦ сохраненное прерывание $3D ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3E ¦ Pointer ¦ сохраненное прерывание $3E ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3F ¦ Pointer ¦ сохраненное прерывание $3F ¦ +---------------+----------------+------------------------------+ ¦ SaveInt75 ¦ Pointer ¦ сохраненное прерывание $75 ¦ +---------------+----------------+------------------------------+ ¦ Seg0040 ¦ Word ¦ селектор сегмента $0040 ¦ +---------------+----------------+------------------------------+ ¦ SegA000 ¦ Word ¦ селектор сегмента $A000 ¦ +---------------+----------------+------------------------------+ ¦ SegB000 ¦ Word ¦ селектор сегмента $B000 ¦ +---------------+----------------+------------------------------+ ¦ SegC000 ¦ Word ¦ селектор сегмента $C000 ¦ +---------------+----------------+------------------------------+ ¦ SelectorInc ¦ Word ¦ шаг увеличения селектора ¦ +---------------+----------------+------------------------------+ ¦ StackLimit ¦ Word ¦ указатель на нижнюю границу ¦ ¦ ¦ ¦ стека ¦ +---------------+----------------+------------------------------+ ¦ Test8086 ¦ Byte ¦ результат проверки процес- ¦ ¦ ¦ ¦ сора 8086 ¦ +---------------+----------------+------------------------------+ ¦ Test8087 ¦ Byte ¦ результат проверки сопроцес- ¦ ¦ ¦ ¦ сора 8087 ¦ L---------------+----------------+-------------------------------


PrefixSeg представляет собой переменную длиной в слово, со- держащую адрес префикса программного сегмента (PSP), создаваемого при выполнении программы операционной системой DOS. Полное описа- ние PSP приведено в руководстве по операционной системе DOS.

Переменная StackLimit содержит смещение начала стека относи- тельно сегмента стека, что соответствует минимальному допустимому значению регистра SP, после которого уже возникает ситуация пере- полнения стека. По умолчанию значение этой переменной равно 0, но если программа компилируется с директивами {$N+,$E+}, то эмулятор сопроцессора 8087 при отсутствии в системе сопроцессора 8087 для резервирования места в младших адресах сегмента стека будет уста- навливать ее в значение 224.

Переменная InOutRes используется встроенными программами ввода-вывода для сохранения значения, возвращаемого при следующем обращении к функции IOResult.

В RandSeed сохраняется начальное значение для встроенного генератора случайных чисел. Если присваивать этой переменной оп- ределенное значение, то функция Random будет генерировать задан- ную последовательность случайных чисел.

Переменная FileMode позволяет изменять режим доступа к отк- рытым типизированным и нетипизированным файлам.

В переменной Test8087 сохраняется результат работы алгорит- мов автоматического распознавания сопроцессора 8087, которые на- чинают работать при запуске программы, скомпилированной с дирек- тивой {$N+}.

Input и Оutput - это стандартные файлы ввода-вывода, необхо- димые в каждой реализации Паскаля. По умолчанию они связываются со стандартными входными и выходными файлами в Dos.

Следующие переменные описываются в модуле System библиотеки TPW.TPL - библиотеке исполняющей системы для приложений Windows.

----------------T----------------T------------------------------ ¦ Переменная ¦ Тип ¦ Описание ¦ +---------------+----------------+------------------------------+ ¦ CmdLine ¦ PChar ¦ указатель командной строки ¦ +---------------+----------------+------------------------------+ ¦ CmdShow ¦ Integer ¦ параметр CmdShow для Create- ¦ ¦ ¦ ¦ Window ¦ +---------------+----------------+------------------------------+ ¦ ErrorAddr ¦ Pointer ¦ адрес ошибки этапа выполне- ¦ ¦ ¦ ¦ ния ¦ +---------------+----------------+------------------------------+ ¦ ExitProc ¦ Pointer ¦ процедура выхода ¦ +---------------+----------------+------------------------------+ ¦ ExitCode ¦ Integer ¦ код выхода ¦ +---------------+----------------+------------------------------+ ¦ FileMode ¦ Byte ¦ режим открытия файла ¦ +---------------+----------------+------------------------------+ ¦ Input ¦ Text ¦ стандартный файл ввода ¦ +---------------+----------------+------------------------------+ ¦ HeapAllocFlag ¦ Word ¦ флаги распределения блока ¦ ¦ ¦ ¦ динамически распределяемой ¦ ¦ ¦ ¦ области памяти ¦ +---------------+----------------+------------------------------+ ¦ HeapBlock ¦ Word ¦ размер блока динамически ¦ ¦ ¦ ¦ распределяемой области памя- ¦ ¦ ¦ ¦ ти ¦ +---------------+----------------+------------------------------+ ¦ HearError ¦ Pointer ¦ функция ошибки динамически ¦ ¦ ¦ ¦ распределяемой области памя- ¦ ¦ ¦ ¦ ти ¦ +---------------+----------------+------------------------------+ ¦ HeapLimit ¦ Word ¦ размер наименьшего блока ди- ¦ ¦ ¦ ¦ намически распределяемой об- ¦ ¦ ¦ ¦ ласти памяти ¦ +---------------+----------------+------------------------------+ ¦ HeapList ¦ Word ¦ список сегментов динамически ¦ ¦ ¦ ¦ распределяемой области памя- ¦ ¦ ¦ ¦ ти ¦ +---------------+----------------+------------------------------+ ¦ HInstance ¦ Word ¦ описатель данного экземпляра ¦ +---------------+----------------+------------------------------+ ¦ HPrevInst ¦ Word ¦ описатель предыдущего экзем- ¦ ¦ ¦ ¦ пляра ¦ +---------------+----------------+------------------------------+ ¦ InOutRes ¦ Integer ¦ буфер результата операции ¦ ¦ ¦ ¦ ввода-вывода ¦ +---------------+----------------+------------------------------+ ¦ Output ¦ Text ¦ стандартный файл вывода ¦ +---------------+----------------+------------------------------+ ¦ PrefixSeg ¦ Word ¦ префикс программного сегмен- ¦ ¦ ¦ ¦ та ¦ +---------------+----------------+------------------------------+ ¦ RandSeed ¦ Longint ¦ случайное число (генериру- ¦ ¦ ¦ ¦ ется датчиком случайных чи- ¦ ¦ ¦ ¦ сел) ¦ +---------------+----------------+------------------------------+ ¦ SelectorInc ¦ Word ¦ шаг увеличения селектора ¦ +---------------+----------------+------------------------------+ ¦ StackLimit ¦ Word ¦ указатель на нижнюю границу ¦ ¦ ¦ ¦ стека ¦ +---------------+----------------+------------------------------+ ¦ Test8086 ¦ Byte ¦ результат проверки процес- ¦ ¦ ¦ ¦ сора 8086 ¦ L---------------+----------------+-------------------------------



HInstance содержит описатель экземпляра прикладной программы или библиотеки, как это предусматривается операционной средой Windows. В программе HPrevInst содержит предыдущий экземпляр прикладной программы, или 0, если предыдущего экземпляра нет. В библиотеке HPrevInst всегда равно 0.

В программе CmdLine содержит указатель на завершающуюся ну- лем строку, которая содержит аргументы командной строки, заданные при запуске прикладной программы. В библиотеке эта переменная не определена.

В программе CmdShow содержит значение параметра, передачу которого в ShowWindow ожидает Windows, когда прикладная программа создает основное окно. В библиотеке эта переменная всегда равна 0.

Подсистемой управления динамически распределяемой областью памяти для реализации программ динамического распределения памяти Borland Pascal используются переменные HeapList, HeapLimit, HeapBlock и HeapError.

Для реализации процедур выхода используются переменные ExitProc, ErrorCode и ErrorAdr.

Переменная PrefixSeg представляет собой переменную длиной в слово, содержащую адрес префикса программного сегмента (PSP), создаваемого при выполнении программы операционной системой DOS. Полное описание PSP приведено в руководстве по операционной сис- теме DOS.

Переменная InOutRes используется встроенными программами ввода-вывода для сохранения значения, возвращаемого при следующем обращении к функции IOResult.



Переменная FileMode позволяет изменять режим доступа к отк- рытым типизованным и нетипизированным файлам. Более подробно это описано в Главе 14 "Ввод и вывод".

Следующие переменные описываются в модуле System библиотеки TPP.TPL - библиотеке исполняющей системы для приложений защищен- ного режима DOS.

----------------T----------------T------------------------------ ¦ Переменная ¦ Тип ¦ Описание ¦ +---------------+----------------+------------------------------+ ¦ ErrorAddr ¦ Pointer ¦ адрес ошибки этапа выполне- ¦ ¦ ¦ ¦ ния ¦ +---------------+----------------+------------------------------+ ¦ ExitProc ¦ Pointer ¦ процедура выхода ¦ +---------------+----------------+------------------------------+ ¦ ExitCode ¦ Integer ¦ код выхода ¦ +---------------+----------------+------------------------------+ ¦ FileMode ¦ Byte ¦ режим открытия файла ¦ +---------------+----------------+------------------------------+ ¦ HeapAllocFlags¦ Word ¦ флаги распределения блока ¦ ¦ ¦ ¦ динамически распределяемой ¦ ¦ ¦ ¦ области памяти ¦ +---------------+----------------+------------------------------+ ¦ HeapBlock ¦ Word ¦ размер блока динамически ¦ ¦ ¦ ¦ распределяемой области памя- ¦ ¦ ¦ ¦ ти ¦ +---------------+----------------+------------------------------+ ¦ HearError ¦ Pointer ¦ функция ошибки динамически ¦ ¦ ¦ ¦ распределяемой области памя- ¦ ¦ ¦ ¦ ти ¦ +---------------+----------------+------------------------------+ ¦ HeapLimit ¦ Word ¦ размер наименьшего блока ди- ¦ ¦ ¦ ¦ намически распределяемой об- ¦ ¦ ¦ ¦ ласти памяти ¦ +---------------+----------------+------------------------------+ ¦ HeapList ¦ Word ¦ список сегментов динамически ¦ ¦ ¦ ¦ распределяемой области памя- ¦ ¦ ¦ ¦ ти ¦ +---------------+----------------+------------------------------+ ¦ HInstance ¦ Word ¦ описатель данного экземпляра ¦ +---------------+----------------+------------------------------+ ¦ HPrevInst ¦ Word ¦ описатель предыдущего экзем- ¦ ¦ ¦ ¦ пляра ¦ +---------------+----------------+------------------------------+ ¦ InOutRes ¦ Integer ¦ буфер результата операции ¦ ¦ ¦ ¦ ввода-вывода ¦ +---------------+----------------+------------------------------+ ¦ Output ¦ Text ¦ стандартный файл вывода ¦ +---------------+----------------+------------------------------+ ¦ PrefixSeg ¦ Word ¦ префикс программного сегмен- ¦ ¦ ¦ ¦ та ¦ +---------------+----------------+------------------------------+ ¦ RandSeed ¦ Longint ¦ случайное число (генериру- ¦ ¦ ¦ ¦ ется датчиком случайных чи- ¦ ¦ ¦ ¦ сел) ¦ +---------------+----------------+------------------------------+ ¦ RealModeRegs ¦ array[0..49] of¦ регистры реального режима ¦ ¦ ¦ byte ¦ ¦ +---------------+----------------+------------------------------+ ¦ SaveInt00 ¦ Pointer ¦ сохраненная исключительная ¦ ¦ ¦ ¦ ситуация $00 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt02 ¦ Pointer ¦ сохраненное прерывание $02 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt0C ¦ Pointer ¦ сохраненное исключительная ¦ ¦ ¦ ¦ ситуация $0С ¦ +---------------+----------------+------------------------------+ ¦ SaveInt0D ¦ Pointer ¦ сохраненное прерывание $0D ¦ +---------------+----------------+------------------------------+ ¦ SaveInt1B ¦ Pointer ¦ сохраненное прерывание $1B ¦ +---------------+----------------+------------------------------+ ¦ SaveInt21 ¦ Pointer ¦ сохраненное прерывание $21 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt23 ¦ Pointer ¦ сохраненное прерывание ¦ ¦ ¦ ¦ реального режима $23 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt24 ¦ Pointer ¦ сохраненное прерывание ¦ ¦ ¦ ¦ реального режима $24 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt34 ¦ Pointer ¦ сохраненное прерывание $34 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt35 ¦ Pointer ¦ сохраненное прерывание $35 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt36 ¦ Pointer ¦ сохраненное прерывание $36 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt37 ¦ Pointer ¦ сохраненное прерывание $37 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3B ¦ Pointer ¦ сохраненное прерывание $38 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt39 ¦ Pointer ¦ сохраненное прерывание $39 ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3A ¦ Pointer ¦ сохраненное прерывание $3A ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3B ¦ Pointer ¦ сохраненное прерывание $3B ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3C ¦ Pointer ¦ сохраненное прерывание $3C ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3D ¦ Pointer ¦ сохраненное прерывание $3D ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3E ¦ Pointer ¦ сохраненное прерывание $3E ¦ +---------------+----------------+------------------------------+ ¦ SaveInt3F ¦ Pointer ¦ сохраненное прерывание $3F ¦ +---------------+----------------+------------------------------+ ¦ SaveInt75 ¦ Pointer ¦ сохраненное прерывание $75 ¦ +---------------+----------------+------------------------------+ ¦ Seg0040 ¦ Word ¦ селектор сегмента $0040 ¦ +---------------+----------------+------------------------------+ ¦ SegA000 ¦ Word ¦ селектор сегмента $A000 ¦ +---------------+----------------+------------------------------+ ¦ SegB000 ¦ Word ¦ селектор сегмента $B000 ¦ +---------------+----------------+------------------------------+ ¦ SegB800 ¦ Word ¦ селектор сегмента $B800 ¦ +---------------+----------------+------------------------------+ ¦ Test8086 ¦ Byte ¦ результат проверки процес- ¦ ¦ ¦ ¦ сора 8086 ¦ +---------------+----------------+------------------------------+ ¦ Test8087 ¦ Byte ¦ результат проверки сопроцес- ¦ ¦ ¦ ¦ сора 8087 ¦ L---------------+----------------+-------------------------------

Более подробную информацию об этих переменных вы можете най- ти в Главе 1 ("Справочник по библиотеке") в "Справочном руководс- тве программиста.




Содержание раздела