| 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
 | Старший байт аргумента Младший байт аргумента
 Число параметров командной строки
 Параметр командной строки
 Случайное число
 Размер аргумента
 Перемена мест младшего и старшего байтов аргумента
 Преобразование строчной буквы в заглавную
 |  Далее кратко описаны процедуры и функции модуля в алфавитном порядке. 
 
 |