В данной главе кратко описываются стандартные (встроенные) процедуры и функции 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 ("Справочник по библиотеке") в "Справочном руководс- тве программиста.
Назад | Содержание | Вперед