16.1. Модуль System
Модуль System является фактически основной библиотекой среды Turbo Pascal. Так, в него входят все предопределенные процедуры и функции стандарта языка Паскаль, а также дополнительные подпрограммы, позволяющие выполнять разнообразные действия общего назначения (управление вводом-выводом, работа со строками, статической и динамической памятью и т. д.).
Модуль System автоматически подключается к любой программе, и его не следует упоминать в разделе объявления используемых модулей uses.
В модуле описан ряд переменных, перечень которых приведен в табл. 9.
Таблица 9. Переменные модуля System
Имя |
Тип |
Назначение |
Input
Output
Savelnt00
Savelnt02
Savelnt1B
Savelnt21
Savelnt23
Savelnt24
Savelnt34
Savelnt35
Savelnt36
Savelnt37
Savelnt38
Savelnt39
SaveInt3A
SaveInt3B
SaveInt3C
SaveInt3D
SaveInt3E
SaveInt3F
Savelnt75 |
Text
»
Pointer
|
Стандартная файловая переменная ввода
Стандартная файловая переменная вывода
Переменная для сохранения вектора прерывания $00
To же $02
To же $1В
To же $21
To же $23
To же $24
To же $34
To же $35
To же $36
To же $37
To же $38
To же $39
To же $ЗА
To же $ЗВ
To же $ЗС
To же $3D
To же $ЗЕ
To же $3F
To же $75 |
Более подробно о файловых переменных Input и Output см. в п. 11.2.
Помимо переменных в модуле System определен ряд типизированных констант (инициализированных переменных), приведенных в табл. 10.
Таблица 10. Инициализированные переменные модуля System
Имя |
Тип |
Значение |
Назначение |
ErrorAddr
ExitCode
ExitProc
FileMode
FreeList
FreeZero
HeapEnd
HeapError
HeapOrg
HeapPtr
InOutRes
OvrCodeList
OvrDebugPtr
OvrDosHandle
OvrEmsHandle
OvrHeapEnd
OvrHeapOrg
OvrHeapPtr
OvrHeapSize
OvrLoadList
PrefixSeg
RandSeed
Seg0040
SegA000
SegB000
SegB800
SelectorInc
StackLimit
Test8086
Test8087 |
Pointer
Integer
Pointer
Byte
Pointer
Pointer
Pointer
Pointer
Pointer
Pointer
Integer
Word
Pointer
Word
Word
Word
Word
Word
Word
Word
Word
Longint
Word
Word
Word
Word
Word
Word
Byte
Byte |
nil
0
nil
2
nil
nil
nil
nil
nil
nil
0
1
nil
0
$FFFF
0
0
0
0
0
0
0
$0040
$A000
$B000
$В800
$1000
0
0
0 |
Адрес ошибки выполнения
Код завершения программы
Адрес процедуры завершения программы
Режим доступа к файлу
Указатель списка свободных блоков динамической области
Резервная переменная
Конец динамической области
Функция обработки ошибок при работе с динамической областью
Начало динамической области
Указатель динамической области
Код результата ввода-вывода
Список оверлейных сегментов
Указатель оверлейной отладки
Параметр связи оверлейной программы с DOS
Параметр связи оверлейной программы с расширенной памятью
Конец оверлейного буфера
Начало оверлейного буфера
Указатель оверлейного буфера
Минимальный размер оверлейного буфера
Список загруженных оверлейных блоков
Адрес префиксного сегмента программы
Параметр генератора случайных чисел
Селектор сегмента $0040
To же $А000
To же $В000
То же $В800
Приращение селектора сегмента
Граница стека
Тип процессора 80x86
Тип сопроцессора 80x87 |
Переменная ErrorAddr содержит значение nil, если программа завершена успешно, и адрес сообщения об ошибке, если произошла ошибка выполнения. Переменная ExitCode содержит код завершения программы (0 - при нормальном завершении) . Переменная ExitProc содержит адрес подпрограммы завершения. Переменная FileMode содержит код режима работы с файлом (0 - только чтение, 1 - только запись, 2 - чтение и запись и т.д.). Параметры FreeList, HeapEnd, HeapError, HeapOrg, HeapPtr можно использовать при работе с динамической областью памяти. Переменная InOutRes содержит код выполнения последней операции ввода-вывода, который затем можно получить с помощью функции IOResult. Параметры OvrCodeList, OvrDebugPtr, OvrDosHandle, OvrEmsHandle, OvrHeapEnd, OvrHeapOrg, OvrHeapPtr, OvrHeapSize, OvrLoadList используются при работе с оверлейными структурами. Параметр PrefixSeg содержит адрес 256-байтового префиксного сегмента программы. В переменной RandSeed помещается исходное значение датчика случайных чисел.
Переменные для сохранения векторов прерывания можно использовать для сохранения в них текущих значений векторов прерывания.
Параметр StackLimit содержит минимально допустимое смещение указателя стека. В параметр Test8086 помещается код, определяющий тип процессора (0 - процессор 8086, 1 - процессор 80286, 2 - процессор 80386 или следующие модификации). В параметр Test8087 - результат тестирования сопроцессора, если он используется программой (0 - нет сопроцессора, 1 - сопроцессор 8087, 2 - сопроцессор 80287, 3 - сопроцессор 80387 или следующие модификации).
Таблица 11. Процедуры и функции модуля System
Имя |
Назначение |
Арифметические функции |
Abs
АrсТаn
Cos
Ехр
Frac
Int
Ln
Pi
Sin
Sqr
Sqrt |
Абсолютное значение аргумента
Арктангенс аргумента
Косинус аргумента
Показательная функция с основанием е
Дробная часть аргумента
Целая часть аргумента
Натуральный логарифм
Число пи (3,1415926535897932385)
Синус аргумента
Квадрат аргумента
Квадратный корень аргумента |
Процедуры для величин порядкового типа |
Dec
Inc |
Уменьшение переменной
Увеличение переменной |
Функции для величин порядкового типа |
Odd
Pred
Succ |
Проверка аргумента на нечетность
Предшествующее значение аргумента
Следующее значение аргумента |
Процедуры работы со строками |
Delete
Insert
Str
Val |
Удаление подстроки из строки
Помещение подстроки в строку
Преобразование числа в строковую переменную
Преобразование символьного представления числа в двоичное |
Функции работы со строками |
Concat
Сору
Length
Pos |
Объединение строк
Выделение подстроки
Длина строки
Поиск подстроки в строке |
Функции преобразования типов |
Chr
High
Low
Ord
Round
Trunc |
Получение символа по его коду
Получение максимального значения величины
Получение минимального значения величины
Порядковый номер величины перечисляемого типа
Округление вещественного число до целого
Целая часть числа |
Функции управления вводом-выводом |
Eof
Eoln
File Pos
FileSize
IOResult
SeekEof
SeekEoln |
Конец файла
Конец строки текстового файла
Номер текущей компоненты файла
Текущий размер файла
Результат последней операции ввода-вывода
Конец файла
Конец строки текстового файла |
Процедуры управления вводом-выводом |
Append
Assign
BlockRead
Block Write
ChDir
Close
Erase
Flush
GetDir
MkDir
Read
Readln
Rename
Reset
Rewrite
RmDir
Seek
SetTextBuf
Truncate
Write
Writeln |
Открытие файла для добавления в конец информации
Связь файловой переменной с внешним файлом
Чтение компонент из файла
Запись компонент в файл
Изменение текущего каталога
Закрытие открытого файла
Уничтожение внешнего файла
Освобождение буфера выходного файла
Получение текущего каталога накопителя
Создание каталога
Чтение информации из файла
Чтение информации из текстового файла
Переименование внешнего файла
Открытие существующего файла
Открытие нового файла
Удаление пустого каталога
Настройка на требуемую компоненту файла
Назначение буфера ввода-вывода
Удаление части файла, начиная с текущей позиции
Запись информации в файл
Запись строки в текстовый файл |
Процедуры управление динамической памятью |
Dispose
FrееMen
GetMem
Mark
New
Release |
Освобождение динамической памяти
Освобождение динамической памяти
Создание новой динамической переменной
Фиксация состояния динамической памяти
Создание новой динамической переменной
Возвращение динамической памяти в заданное состояние |
Функции управления динамической памятью и адресные функции |
Addr
Assigned
CSeg
DSeg
MaxAvail
MemAvail
New
Ofs
Ptr
Seg
SSeg
SPtr |
Адрес аргумента
Проверка равенства указателя значению nil
Содержимое регистра CS
Содержимое регистра DS
Размер максимального блока динамической памяти
Размер свободной области динамической памяти
Создание новой динамической переменной
Смещение адреса аргумента
Преобразование адреса в указатель
Адрес сегмента аргумента
Содержимое регистра SS
Содержимое регистра SP |
Управление программой |
Break
Continue
Exit
Halt
RunError |
Досрочный выход из цикла
Начало новой итерации цикла
Выход из текущей подпрограммы или программы
Прекращение исполнения программы
Прекращение исполнения программы с выдачей сообщения об ошибке |
Процедуры разнообразного назначения |
Exclude
FillChar
Include
Move
Randomize |
Исключение элементов множества
Заполнение области заданным значением
Включение элементов множества
Копирование области памяти
Инициализация генератора случайных чисел |
Функции разнообразного назначения |
Hi
Lo
ParamCount
ParamStr
Random
SizeOf
Swap
UpCase |
Старший байт аргумента
Младший байт аргумента
Число параметров командной строки
Параметр командной строки
Случайное число
Размер аргумента
Перемена мест младшего и старшего байтов аргумента
Преобразование строчной буквы в заглавную |
Далее кратко описаны процедуры и функции модуля в алфавитном порядке.
|