Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Руководство по языку Паскаль 1.doc
Скачиваний:
12
Добавлен:
22.04.2019
Размер:
2.48 Mб
Скачать

Глава 13. Стандартные процедуры и функции

─────────────────────────────────────────────────────────────────

В данной главе кратко описываются стандартные (встроенные)

процедуры и функции Borland Pascal и предописанные переменные,

определенные в модуле System. Более подробную информацию о конк-

ретной процедуре, функции или предописанной переменной вы можете

найти в Главе 1 ("Справочник по библиотеке") в "Руководстве прог-

раммиста".

Стандартные процедуры и функции являются предописанными. Так

как записи с их предварительными описаниями действуют точно так-

же, как если бы они были описаны в окружающем программу модуле,

при описании, переопределяющем тот же идентификатор внутри прог-

раммы конфликта не возникает.

Примечание: О других процедурах и функциях вы можете

прочесть в Главе 14 "Ввод и вывод".

В данной главе освещаются следующие темы:

- Процедуры управления программой.

- Функции преобразования.

- Арифметические функции.

- Порядковые процедуры и функции.

- Строковые процедуры и функции.

- Процедуры и функции динамического распределения памяти.

- Прочие процедуры и функции.

- Предописанные переменные модуля System.

B.Pascal 7 & Objects/LR - 200 -

Процедуры управления работой программы

─────────────────────────────────────────────────────────────────

Процедуры управления работой программы - это процедуры, уп-

равляющие логикой выполнения программы.

┌───────────────────┬───────────────────────────────────────────┐

│ Процедура │ Описание │

├───────────────────┼───────────────────────────────────────────┤

│ Break │ Завершает оператор for, while или repeat. │

├───────────────────┼───────────────────────────────────────────┤

│ Continue │ Продолжает итерацию оператора for, while,│

│ │ или repeat. │

├───────────────────┼───────────────────────────────────────────┤

│ Eхit │ Позволяет немедленно выйти из текущего мо-│

│ │ дуля. │

├───────────────────┼───────────────────────────────────────────┤

│ Наlt │ Останавливает выполнение программы и возв-│

│ │ ращает управление операционной системе. │

├───────────────────┼───────────────────────────────────────────┤

│ RunError │ Останавливает выполнение программы и гене-│

│ │ рирует ошибку этапа выполнения. │

└───────────────────┴───────────────────────────────────────────┘

Функции преобразования

─────────────────────────────────────────────────────────────────

Ниже перечислены функции преобразования.

┌──────────────────┬────────────────────────────────────────────┐

│ Функция │ Описание │

├──────────────────┼────────────────────────────────────────────┤

│ Chr │ Возвращает символ, заданный целым числом. │

├──────────────────┼────────────────────────────────────────────┤

│ High │ Возвращает старшее значение в диапазоне ар-│

│ │ гумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Low │ Возвращает младшее значение в диапазоне ар-│

│ │ гумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Оrd │ Возвращает порядковое число по значению пе-│

│ │ речислимого типа. │

├──────────────────┼────────────────────────────────────────────┤

│ Rоund │ Округляет значение вещественного типа до│

│ │ значения, имеющего длинный целый тип. │

├──────────────────┼────────────────────────────────────────────┤

│ Тrunс │ Усекает значение вещественного типа до зна-│

│ │ чения, имеющего длинный целый тип. │

└──────────────────┴────────────────────────────────────────────┘

B.Pascal 7 & Objects/LR - 201 -

Арифметические функции

─────────────────────────────────────────────────────────────────

Эти функции полезно использовать для выполнения арифметичес-

ких операций.

Примечание: Значения, возвращаемые процедурами опера-

ций с плавающей запятой модуля System, при компиляции в

режиме числовой обработки (директива {$N+}), имеют не ве-

щественный тип (real), а расширенный (extended).

┌──────────────────┬────────────────────────────────────────────┐

│ Функция │ Описание │

├──────────────────┼────────────────────────────────────────────┤

│ Abs │ Возвращает абсолютное значение аргумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Аrctan │ Возвращает арктангенс аргумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Cоs │ Возвращает косинус аргумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Eхp │ Возвращает экспоненту аргумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Frас │ Возвращает дробную часть аргумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Int │ Возвращает целую часть аргумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Ln │ Возвращает натуральный логарифм аргумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Pi │ Возвращает значение числа Pi │

│ │ (3.141592653897932385). │

├──────────────────┼────────────────────────────────────────────┤

│ Sin │ Возвращает синус аргумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Sqr │ Возвращает аргумент в квадрате. │

├──────────────────┼────────────────────────────────────────────┤

│ Sqrt │ Возвращает квадратный корень аргумента. │

└──────────────────┴────────────────────────────────────────────┘

B.Pascal 7 & Objects/LR - 202 -

Порядковые процедуры и функции

─────────────────────────────────────────────────────────────────

┌──────────────────┬────────────────────────────────────────────┐

│ Процедура/функция│ Описание │

├──────────────────┼────────────────────────────────────────────┤

│ Dес │ Уменьшает значение переменной. │

├──────────────────┼────────────────────────────────────────────┤

│ Inс │ Увеличивает значение переменной. │

├──────────────────┼────────────────────────────────────────────┤

│ Оdd │ Проверяет, является ли аргумент нечетным│

│ │ числом. │

├──────────────────┼────────────────────────────────────────────┤

│ Рred │ Возвращает предшествующее значение аргумен-│

│ │ та. │

├──────────────────┼────────────────────────────────────────────┤

│ Suсс │ Возвращает его последующее значение. │

└──────────────────┴────────────────────────────────────────────┘

Строковые процедуры и функции

─────────────────────────────────────────────────────────────────

Следующие процедуры и функции используются для работы со

строками Паскаля.

┌──────────────────┬────────────────────────────────────────────┐

│ Процедура │ Описание │

├──────────────────┼────────────────────────────────────────────┤

│ Cоncat │ Выполняет конкатенацию последовательности│

│ │ строк. │

├──────────────────┼────────────────────────────────────────────┤

│ Cору │ Возвращает подстроку строки. │

├──────────────────┼────────────────────────────────────────────┤

│ Delete │ Удаляет из строки подстроку. │

├──────────────────┼────────────────────────────────────────────┤

│ Insert │ Добавляет в строку подстроку. │

├──────────────────┼────────────────────────────────────────────┤

│ Length │ Возвращает динамическую длину строки. │

├──────────────────┼────────────────────────────────────────────┤

│ Pоs │ Производит поиск подстроки в строке. │

├──────────────────┼────────────────────────────────────────────┤

│ Str │ Преобразует численное значение в его стро-│

│ │ ковое представление. │

├──────────────────┼────────────────────────────────────────────┤

│ Val │ Преобразует строковое значение в его чис-│

│ │ ленное представление. │

└──────────────────┴────────────────────────────────────────────┘

B.Pascal 7 & Objects/LR - 203 -

Процедуры и функции динамического распределения памяти

─────────────────────────────────────────────────────────────────

Эти процедуры и функции используются для управления динами-

чески распределяемой областью - областью памяти, которая занимает

всю свободную память или ее часть, остающуюся при выполнении

программы. Полное описание методов, используемых для управления

динамически распределяемой областью памяти приводится в разделе

"Программа динамического распределения памяти" в Главе 21 ("Воп-

росы управления памятью").

Процедуры динамического распределения памяти

┌──────────────────┬────────────────────────────────────────────┐

│ Процедура/функция│ Описание │

├──────────────────┼────────────────────────────────────────────┤

│ Dispose │ Уничтожает динамическую переменную. │

├──────────────────┼────────────────────────────────────────────┤

│ FrееМем │ Уничтожает динамическую переменную данного│

│ │ размера. │

├──────────────────┼────────────────────────────────────────────┤

│ GetМем │ Создает новую динамическую переменную за-│

│ │ данного размера и устанавливает на нее пе-│

│ │ ременную-указатель. │

├──────────────────┼────────────────────────────────────────────┤

│ МахАvail │ Возвращает размер наибольшего непрерывного│

│ │ свободного модуля в динамически распределя-│

│ │ емой области памяти, соответствующий разме-│

│ │ ру наибольшей динамической переменной, ко-│

│ │ торая может быть выделена при обращении в│

│ │ МахAvail. │

├──────────────────┼────────────────────────────────────────────┤

│ МемАvail │ Возвращает количество имеющихся в динами-│

│ │ чески распределяемой области свободных│

│ │ байт. │

├──────────────────┼────────────────────────────────────────────┤

│ New │ Создает новую динамическую переменную и ус-│

│ │ танавливает на нее переменную-указатель. │

└──────────────────┴────────────────────────────────────────────┘

B.Pascal 7 & Objects/LR - 204 -

Функции для работы с указателями и адресами

─────────────────────────────────────────────────────────────────

Ниже перечислены функции для работы с указателями и адреса-

ми.

┌──────────────────┬────────────────────────────────────────────┐

│ Функции │ Описание │

├──────────────────┼────────────────────────────────────────────┤

│ Аddr │ Возвращает адрес заданного объекта. │

├──────────────────┼────────────────────────────────────────────┤

│ CSeg │ Возвращает текущее значение регистра CS. │

├──────────────────┼────────────────────────────────────────────┤

│ DSeg │ Возвращает текущее значение регистра DS. │

├──────────────────┼────────────────────────────────────────────┤

│ Оfs │ Возвращает смещение для заданного объекта. │

├──────────────────┼────────────────────────────────────────────┤

│ Ptr │ Преобразует адрес базового сегмента и сме-│

│ │ щение в значение типа указатель. │

├──────────────────┼────────────────────────────────────────────┤

│ Seg │ Возвращает сегмент для заданного объекта. │

├──────────────────┼────────────────────────────────────────────┤

│ SPtr │ Возвращает текущее значение регистра SР. │

├──────────────────┼────────────────────────────────────────────┤

│ SSeg │ Возвращает текущее значение регистра SS. │

└──────────────────┴────────────────────────────────────────────┘

B.Pascal 7 & Objects/LR - 205 -

Прочие процедуры и функции

─────────────────────────────────────────────────────────────────

┌──────────────────┬────────────────────────────────────────────┐

│ Процедура/функция│ Описание │

├──────────────────┼────────────────────────────────────────────┤

│ Exclude │ Исключает элемент из множества. │

├──────────────────┼────────────────────────────────────────────┤

│ FillChar │ Заполняет заданное число следующих друг за│

│ │ другом бит указанным значением. │

├──────────────────┼────────────────────────────────────────────┤

│ Hi │ Возвращает старший байт аргумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Include │ Включает элемент в множество. │

├──────────────────┼────────────────────────────────────────────┤

│ Lo │ Возвращает младший байт аргумента. │

├──────────────────┼────────────────────────────────────────────┤

│ Моvе │ Копирует заданное число непрерывных байт в│

│ │ указанных границах из одного места в дру-│

│ │ гое, границы которого также указываются. │

├──────────────────┼────────────────────────────────────────────┤

│ ParamCount │ Возвращает число параметров, переданных│

│ │ программе в командной строке. │

├──────────────────┼────────────────────────────────────────────┤

│ ParamStr │ Возвращает параметр, заданный в командной│

│ │ строке. │

├──────────────────┼────────────────────────────────────────────┤

│ Random │ Возвращает случайное число. │

├──────────────────┼────────────────────────────────────────────┤

│ Rаndомizе │ Инициализирует встроенный генератор случай-│

│ │ ных чисел случайным значением. │

├──────────────────┼────────────────────────────────────────────┤

│ SizeOf │ Возвращает число байт, занимаемых аргумен-│

│ │ том. │

├──────────────────┼────────────────────────────────────────────┤

│ Swap │ Меняет местами старший и младший байты ар-│

│ │ гумента. │

├──────────────────┼────────────────────────────────────────────┤

│ TypeOf │ Указывает на таблицу виртуальных методов│

│ │ объекта. │

├──────────────────┼────────────────────────────────────────────┤

│ UpCase │ Преобразует символ в верхний регистр. │

└──────────────────┴────────────────────────────────────────────┘

B.Pascal 7 & Objects/LR - 206 -

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

─────────────────────────────────────────────────────────────────

Кроме процедур и функций в модуле System предусмотрен ряд

предописанных переменных. Их перечень зависит от библиотеки ис-

полняющей системы, к которой относится модуль System.

Следующие переменные описываются в модуле System библиотеки

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

ного режима DOS.

┌───────────────┬────────────────┬──────────────────────────────┐

│ Переменная │ Тип │ Описание │

├───────────────┼────────────────┼──────────────────────────────┤

│ 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 │

B.Pascal 7 & Objects/LR - 207 -

├───────────────┼────────────────┼──────────────────────────────┤

│ 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 │

├───────────────┼────────────────┼──────────────────────────────┤

B.Pascal 7 & Objects/LR - 208 -

│ 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 │

└───────────────┴────────────────┴──────────────────────────────┘

PrefixSeg представляет собой переменную длиной в слово, со-

держащую адрес префикса программного сегмента (PSP), создаваемого

при выполнении программы операционной системой DOS. Полное описа-

ние PSP приведено в руководстве по операционной системе DOS.

Переменная StackLimit содержит смещение начала стека относи-

тельно сегмента стека, что соответствует минимальному допустимому

значению регистра SP, после которого уже возникает ситуация пере-

полнения стека. По умолчанию значение этой переменной равно 0, но

если программа компилируется с директивами {$N+,$E+}, то эмулятор

сопроцессора 8087 при отсутствии в системе сопроцессора 8087 для

резервирования места в младших адресах сегмента стека будет уста-

навливать ее в значение 224.

Переменная InOutRes используется встроенными программами

ввода-вывода для сохранения значения, возвращаемого при следующем

обращении к функции IOResult.

В RandSeed сохраняется начальное значение для встроенного

генератора случайных чисел. Если присваивать этой переменной оп-

ределенное значение, то функция Random будет генерировать задан-

ную последовательность случайных чисел.

B.Pascal 7 & Objects/LR - 209 -

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

рытым типизированным и нетипизированным файлам.

В переменной Test8087 сохраняется результат работы алгорит-

мов автоматического распознавания сопроцессора 8087, которые на-

чинают работать при запуске программы, скомпилированной с дирек-

тивой {$N+}.

Input и Оutput - это стандартные файлы ввода-вывода, необхо-

димые в каждой реализации Паскаля. По умолчанию они связываются

со стандартными входными и выходными файлами в Dos.

B.Pascal 7 & Objects/LR - 210 -

Следующие переменные описываются в модуле System библиотеки

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

┌───────────────┬────────────────┬──────────────────────────────┐

│ Переменная │ Тип │ Описание │

├───────────────┼────────────────┼──────────────────────────────┤

│ 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 │ стандартный файл вывода │

├───────────────┼────────────────┼──────────────────────────────┤

B.Pascal 7 & Objects/LR - 211 -

│ PrefixSeg │ Word │ префикс программного сегмен- │

│ │ │ та │

├───────────────┼────────────────┼──────────────────────────────┤

│ RandSeed │ Longint │ случайное число (генериру- │

│ │ │ ется датчиком случайных чи- │

│ │ │ сел) │

├───────────────┼────────────────┼──────────────────────────────┤

│ SelectorInc │ Word │ шаг увеличения селектора │

├───────────────┼────────────────┼──────────────────────────────┤

│ StackLimit │ Word │ указатель на нижнюю границу │

│ │ │ стека │

├───────────────┼────────────────┼──────────────────────────────┤

│ Test8086 │ Byte │ результат проверки процес- │

│ │ │ сора 8086 │

└───────────────┴────────────────┴──────────────────────────────┘

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 "Ввод и вывод".

B.Pascal 7 & Objects/LR - 212 -

Следующие переменные описываются в модуле System библиотеки

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

ного режима DOS.

┌───────────────┬────────────────┬──────────────────────────────┐

│ Переменная │ Тип │ Описание │

├───────────────┼────────────────┼──────────────────────────────┤

│ 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 │ случайное число (генериру- │

│ │ │ ется датчиком случайных чи- │

│ │ │ сел) │

B.Pascal 7 & Objects/LR - 213 -

├───────────────┼────────────────┼──────────────────────────────┤

│ 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 │

B.Pascal 7 & Objects/LR - 214 -

├───────────────┼────────────────┼──────────────────────────────┤

│ SegB000 │ Word │ селектор сегмента $B000 │

├───────────────┼────────────────┼──────────────────────────────┤

│ SegB800 │ Word │ селектор сегмента $B800 │

├───────────────┼────────────────┼──────────────────────────────┤

│ Test8086 │ Byte │ результат проверки процес- │

│ │ │ сора 8086 │

├───────────────┼────────────────┼──────────────────────────────┤

│ Test8087 │ Byte │ результат проверки сопроцес- │

│ │ │ сора 8087 │

└───────────────┴────────────────┴──────────────────────────────┘

Более подробную информацию об этих переменных вы можете най-

ти в Главе 1 ("Справочник по библиотеке") в "Справочном руководс-

тве программиста.

B.Pascal 7 & Objects/LR - 215 -

───────────────────────────────────────────────────────────────────────

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]