Глава 13. Стандартные процедуры и функции
В данной главе кратко описываются стандартные (встроенные)
процедуры и функции Borland Pascal и предописанные переменные,
определенные в модуле System. Более подробную информацию о конк-
ретной процедуре, функции или предописанной переменной вы можете
найти в Главе 1 ("Справочник по библиотеке") в "Руководстве прог-
раммиста".
Стандартные процедуры и функции являются предописанными. Так
как записи с их предварительными описаниями действуют точно так-
же, как если бы они были описаны в окружающем программу модуле,
при описании, переопределяющем тот же идентификатор внутри прог-
раммы конфликта не возникает.
Примечание: О других процедурах и функциях вы можете
прочесть в Главе 14 "Ввод и вывод".
В данной главе освещаются следующие темы:
- Процедуры управления программой.
- Функции преобразования.
- Арифметические функции.
- Порядковые процедуры и функции.
- Строковые процедуры и функции.
- Процедуры и функции динамического распределения памяти.
- Прочие процедуры и функции.
- Предописанные переменные модуля System.
Процедуры управления работой программы
Процедуры управления работой программы - это процедуры, уп-
равляющие логикой выполнения программы.
--------------------T-------------------------------------------
¦ Процедура ¦ Описание ¦
+-------------------+-------------------------------------------+
¦ Break ¦ Завершает оператор for, while или repeat. ¦
+-------------------+-------------------------------------------+
¦ Continue ¦ Продолжает итерацию оператора for, while,¦
¦ ¦ или repeat. ¦
+-------------------+-------------------------------------------+
¦ Eхit ¦ Позволяет немедленно выйти из текущего мо-¦
¦ ¦ дуля. ¦
+-------------------+-------------------------------------------+
¦ Наlt ¦ Останавливает выполнение программы и возв-¦
¦ ¦ ращает управление операционной системе. ¦
+-------------------+-------------------------------------------+
¦ RunError ¦ Останавливает выполнение программы и гене-¦
¦ ¦ рирует ошибку этапа выполнения. ¦
L-------------------+--------------------------------------------
Функции преобразования
Ниже перечислены функции преобразования.
-------------------T--------------------------------------------
¦ Функция ¦ Описание ¦
+------------------+--------------------------------------------+
¦ Chr ¦ Возвращает символ, заданный целым числом. ¦
+------------------+--------------------------------------------+
¦ High ¦ Возвращает старшее значение в диапазоне ар-¦
¦ ¦ гумента. ¦
+------------------+--------------------------------------------+
¦ Low ¦ Возвращает младшее значение в диапазоне ар-¦
¦ ¦ гумента. ¦
+------------------+--------------------------------------------+
¦ Оrd ¦ Возвращает порядковое число по значению пе-¦
¦ ¦ речислимого типа. ¦
+------------------+--------------------------------------------+
¦ Rоund ¦ Округляет значение вещественного типа до¦
¦ ¦ значения, имеющего длинный целый тип. ¦
+------------------+--------------------------------------------+
¦ Тrunс ¦ Усекает значение вещественного типа до зна-¦
¦ ¦ чения, имеющего длинный целый тип. ¦
L------------------+---------------------------------------------
Арифметические функции
Эти функции полезно использовать для выполнения арифметичес-
ких операций.
Примечание: Значения, возвращаемые процедурами опера-
ций с плавающей запятой модуля System, при компиляции в
режиме числовой обработки (директива {$N+}), имеют не ве-
щественный тип (real), а расширенный (extended).
-------------------T--------------------------------------------
¦ Функция ¦ Описание ¦
+------------------+--------------------------------------------+
¦ Abs ¦ Возвращает абсолютное значение аргумента. ¦
+------------------+--------------------------------------------+
¦ Аrctan ¦ Возвращает арктангенс аргумента. ¦
+------------------+--------------------------------------------+
¦ Cоs ¦ Возвращает косинус аргумента. ¦
+------------------+--------------------------------------------+
¦ Eхp ¦ Возвращает экспоненту аргумента. ¦
+------------------+--------------------------------------------+
¦ Frас ¦ Возвращает дробную часть аргумента. ¦
+------------------+--------------------------------------------+
¦ Int ¦ Возвращает целую часть аргумента. ¦
+------------------+--------------------------------------------+
¦ Ln ¦ Возвращает натуральный логарифм аргумента. ¦
+------------------+--------------------------------------------+
¦ Pi ¦ Возвращает значение числа Pi ¦
¦ ¦ (3.141592653897932385). ¦
+------------------+--------------------------------------------+
¦ Sin ¦ Возвращает синус аргумента. ¦
+------------------+--------------------------------------------+
¦ Sqr ¦ Возвращает аргумент в квадрате. ¦
+------------------+--------------------------------------------+
¦ Sqrt ¦ Возвращает квадратный корень аргумента. ¦
L------------------+---------------------------------------------
Порядковые процедуры и функции
-------------------T--------------------------------------------
¦ Процедура/функция¦ Описание ¦
+------------------+--------------------------------------------+
¦ Dес ¦ Уменьшает значение переменной. ¦
+------------------+--------------------------------------------+
¦ Inс ¦ Увеличивает значение переменной. ¦
+------------------+--------------------------------------------+
¦ Оdd ¦ Проверяет, является ли аргумент нечетным¦
¦ ¦ числом. ¦
+------------------+--------------------------------------------+
¦ Рred ¦ Возвращает предшествующее значение аргумен-¦
¦ ¦ та. ¦
+------------------+--------------------------------------------+
¦ Suсс ¦ Возвращает его последующее значение. ¦
L------------------+---------------------------------------------
Строковые процедуры и функции
Следующие процедуры и функции используются для работы со
строками Паскаля.
-------------------T--------------------------------------------
¦ Процедура ¦ Описание ¦
+------------------+--------------------------------------------+
¦ Cоncat ¦ Выполняет конкатенацию последовательности¦
¦ ¦ строк. ¦
+------------------+--------------------------------------------+
¦ Cору ¦ Возвращает подстроку строки. ¦
+------------------+--------------------------------------------+
¦ Delete ¦ Удаляет из строки подстроку. ¦
+------------------+--------------------------------------------+
¦ Insert ¦ Добавляет в строку подстроку. ¦
+------------------+--------------------------------------------+
¦ Length ¦ Возвращает динамическую длину строки. ¦
+------------------+--------------------------------------------+
¦ Pоs ¦ Производит поиск подстроки в строке. ¦
+------------------+--------------------------------------------+
¦ Str ¦ Преобразует численное значение в его стро-¦
¦ ¦ ковое представление. ¦
+------------------+--------------------------------------------+
¦ Val ¦ Преобразует строковое значение в его чис-¦
¦ ¦ ленное представление. ¦
L------------------+---------------------------------------------
Процедуры и функции динамического распределения памяти
Эти процедуры и функции используются для управления динами-
чески распределяемой областью - областью памяти, которая занимает
всю свободную память или ее часть, остающуюся при выполнении
программы. Полное описание методов, используемых для управления
динамически распределяемой областью памяти приводится в разделе
"Программа динамического распределения памяти" в Главе 21 ("Воп-
росы управления памятью").
Процедуры динамического распределения памяти
-------------------T--------------------------------------------
¦ Процедура/функция¦ Описание ¦
+------------------+--------------------------------------------+
¦ Dispose ¦ Уничтожает динамическую переменную. ¦
+------------------+--------------------------------------------+
¦ FrееМем ¦ Уничтожает динамическую переменную данного¦
¦ ¦ размера. ¦
+------------------+--------------------------------------------+
¦ GetМем ¦ Создает новую динамическую переменную за-¦
¦ ¦ данного размера и устанавливает на нее пе-¦
¦ ¦ ременную-указатель. ¦
+------------------+--------------------------------------------+
¦ МахАvail ¦ Возвращает размер наибольшего непрерывного¦
¦ ¦ свободного модуля в динамически распределя-¦
¦ ¦ емой области памяти, соответствующий разме-¦
¦ ¦ ру наибольшей динамической переменной, ко-¦
¦ ¦ торая может быть выделена при обращении в¦
¦ ¦ МахAvail. ¦
+------------------+--------------------------------------------+
¦ МемАvail ¦ Возвращает количество имеющихся в динами-¦
¦ ¦ чески распределяемой области свободных¦
¦ ¦ байт. ¦
+------------------+--------------------------------------------+
¦ New ¦ Создает новую динамическую переменную и ус-¦
¦ ¦ танавливает на нее переменную-указатель. ¦
L------------------+---------------------------------------------
Функции для работы с указателями и адресами
Ниже перечислены функции для работы с указателями и адреса-
ми.
-------------------T--------------------------------------------
¦ Функции ¦ Описание ¦
+------------------+--------------------------------------------+
¦ Аddr ¦ Возвращает адрес заданного объекта. ¦
+------------------+--------------------------------------------+
¦ CSeg ¦ Возвращает текущее значение регистра CS. ¦
+------------------+--------------------------------------------+
¦ DSeg ¦ Возвращает текущее значение регистра DS. ¦
+------------------+--------------------------------------------+
¦ Оfs ¦ Возвращает смещение для заданного объекта. ¦
+------------------+--------------------------------------------+
¦ Ptr ¦ Преобразует адрес базового сегмента и сме-¦
¦ ¦ щение в значение типа указатель. ¦
+------------------+--------------------------------------------+
¦ Seg ¦ Возвращает сегмент для заданного объекта. ¦
+------------------+--------------------------------------------+
¦ SPtr ¦ Возвращает текущее значение регистра SР. ¦
+------------------+--------------------------------------------+
¦ SSeg ¦ Возвращает текущее значение регистра SS. ¦
L------------------+---------------------------------------------
Прочие процедуры и функции
-------------------T--------------------------------------------
¦ Процедура/функция¦ Описание ¦
+------------------+--------------------------------------------+
¦ Exclude ¦ Исключает элемент из множества. ¦
+------------------+--------------------------------------------+
¦ FillChar ¦ Заполняет заданное число следующих друг за¦
¦ ¦ другом бит указанным значением. ¦
+------------------+--------------------------------------------+
¦ Hi ¦ Возвращает старший байт аргумента. ¦
+------------------+--------------------------------------------+
¦ Include ¦ Включает элемент в множество. ¦
+------------------+--------------------------------------------+
¦ Lo ¦ Возвращает младший байт аргумента. ¦
+------------------+--------------------------------------------+
¦ Моvе ¦ Копирует заданное число непрерывных байт в¦
¦ ¦ указанных границах из одного места в дру-¦
¦ ¦ гое, границы которого также указываются. ¦
+------------------+--------------------------------------------+
¦ ParamCount ¦ Возвращает число параметров, переданных¦
¦ ¦ программе в командной строке. ¦
+------------------+--------------------------------------------+
¦ ParamStr ¦ Возвращает параметр, заданный в командной¦
¦ ¦ строке. ¦
+------------------+--------------------------------------------+
¦ Random ¦ Возвращает случайное число. ¦
+------------------+--------------------------------------------+
¦ Rаndомizе ¦ Инициализирует встроенный генератор случай-¦
¦ ¦ ных чисел случайным значением. ¦
+------------------+--------------------------------------------+
¦ SizeOf ¦ Возвращает число байт, занимаемых аргумен-¦
¦ ¦ том. ¦
+------------------+--------------------------------------------+
¦ Swap ¦ Меняет местами старший и младший байты ар-¦
¦ ¦ гумента. ¦
+------------------+--------------------------------------------+
¦ TypeOf ¦ Указывает на таблицу виртуальных методов¦
¦ ¦ объекта. ¦
+------------------+--------------------------------------------+
¦ UpCase ¦ Преобразует символ в верхний регистр. ¦
L------------------+---------------------------------------------
Предописанные переменные
Кроме процедур и функций в модуле 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 ("Справочник по библиотеке") в "Справочном руководс-
тве программиста.
Назад | Содержание | Вперед
|
|