- •Часть I. Работа в среде
- •Глава 1. Интегрированная среда
- •1.1. Окно просмотра результатов Output
- •1.2. Окно просмотра переменных Watch
- •1.3. Структура меню
- •1.3.1. Пункт File (работа с файлами)
- •1.3.2. Пункт Edit (работа с редактором)
- •1.3.3. Пункт Run (запуск на выполнение)
- •1.3.4. Пункт Compile (компиляция)
- •1.3.5. Пункт Options (установка параметров системы)
- •1.3.6. Пункт Debug (установки отладчика)
- •1.3.7. Пункт Break/Watch (точки останова/обзор)
- •1.4. Интерактивная справка
- •Глава 2. Настройка системы
- •2.1. Система настройки среды программирования
- •2.2. Принятые в системе расширения имен файлов
- •Часть II. Язык турбо паскаль
- •Глава 3. Построение программ
- •3.1. Алфавит языка и зарезервированные слова
- •3.2. Общая структура программ
- •3.3. Комментарии и ключи компиляции
- •3.4. Условная компиляция программ
- •Глава 4. Введение в систему типов языка
- •4.1. Простые типы языка
- •4.1.1. Целочисленные типы
- •4.1.2. Вещественные числа
- •4.1.3. Логический тип
- •4.1.4. Символьный тип
- •4.1.5. Строковый тип
- •4.1.6. Адресный тип
- •4.1.7. Перечислимые типы
- •4.1.8. Ограниченные типы (диапазоны)
- •4.2. Сложные типы языка
- •Глава 5. Константы и переменные
- •5.1. Простые константы
- •5.2. Переменные
- •5.2.1. Совмещение адресов директивой absolute
- •5.2.2. Переменные со стартовым значением или типизированные константы
- •5.3. Операция присваивания и совместимость типов и значений
- •5.4.Изменение (приведение) типов и значений
- •Глава 6. Управляющие структуры языка
- •6.1. Простой и составной операторы
- •6.2. Условный оператор (if...Then...Else)
- •If Условие then Оператор1 else Оператор2;
- •6.3. Оператор варианта (case)
- •6.4. Оператор цикла с предусловием (while)
- •6.6. Оператор цикла с параметром (for...Do)
- •6.7. Оператор безусловного перехода Goto
- •6.8. Операторы Exit и Halt
- •6.9. Процедуры и функции
- •6.9.1. Параметры. Глобальные и локальные описания
- •6.9.2. Опережающее описание процедур и функций
- •6.9.3. Объявление внешних процедур
- •6.9.4. Процедуры и функции как параметры
- •6.9.5. Переменные-процедуры и функции
- •6.9.6. Специальные приемы программирования
- •6.10. Модули. Структура модулей
- •6.11. Особенности работы с модулями
- •6.12. Система библиотечных модулей языка
- •Часть III. Средства языка турбо паскаль
- •Глава 7. Массивы, записи и множества в деталях
- •7.1. Массивы (Array) и работа с ними
- •7.2. Тип «запись» (Record) и оператор присоединения With
- •7.3. Тип «множество» (Set). Операции с множествами
- •Глава 8. Обработка символов и строк
- •8.1. Символьный и строковый типы (Char и String)
- •8.2. Операции над символами
- •8.3. Операции над строками
- •8.3.1. Редактирование строк
- •8.3.2. Преобразование строк
- •8.3.2.1. Процедура Str( X [: Width [: dec ] ]; var s : String)
- •Глава 9. Математические возможности Турбо Паскаля
- •9.1. Базовые операции
- •9.2. Битовая арифметика
- •9.3. Логические вычисления и операции отношения
- •9.4. Математические процедуры и функции
- •9.4.1. Обсуждение математических функций языка
- •9.4.2. Генераторы случайных чисел
- •9.4.3. Оптимизация сложения и вычитания
- •9.5. Использование математического сопроцессора 80x87
- •Глава 10. Код программы, данные, адреса
- •10.2. Распределение памяти при выполнении программ
- •10.3. Анализ расположения кода и областей данных программы
- •10.5. Средства для работы с адресами
- •10.5.1. Определение адреса переменных
- •10.5.2. Создание адреса функцией Ptr
- •10.5.3. Определение размеров типов и переменных
- •Глава 11. Ссылки, динамические переменные и структуры
- •11.1. Ссылочные переменные
- •11.2. Операция разыменования
- •11.3. Организация памяти области кучи
- •11.4. Управление размерами области кучи и стека
- •11.5. Процедуры управления кучей
- •11.5.1. Размещение динамических переменных.
- •11.5.2. Освобождение динамических переменных.
- •11.5.3. Управление состоянием кучи.
- •11.5.4. Анализ состояния кучи.
- •11.5.5. Более детальный анализ состояния кучи
- •11.6. Ссылки, работающие не с кучей
- •11.5.6. Обработка ошибок распределения памяти
- •11.7. Как организовать структуры, большие чем 64к?
- •11.8. Практический пример построения стека
- •Глава 12. Ввод-вывод данных и файловая система
- •12.1. Понятие логического файла
- •12.2. Физические файлы в ms-dos
- •12.3. Понятие буфера ввода-вывода
- •12.4. Файловые типы Турбо Паскаля
- •12.5. Общие процедуры для работы с файлами
- •12.5.1. Связывание файлов
- •12.5.2. Открытие файлов
- •12.5.3. Закрытие файлов
- •12.5.4. Переименование файлов
- •12.5.5. Удаление файлов
- •12.5.6. Анализ состояния файлов
- •12.6. Текстовые файлы
- •12.6.1. Текст-ориентированные процедуры и функции
- •12.6.2. Операции ввода-вывода в текстовые файлы
- •123 1.23 [Клавиша ввода]
- •123 [Клавиша ввода] 1.23 [Клавиша ввода]
- •12.7. Типизированные файлы и операции ввода-вывода
- •12.8. Бестиповые файлы и операции ввода-вывода
- •12.9. Последовательный и прямой доступ к файлам
- •12.9.1. Опрос размеров файлов и позиции в них
- •12.9.2. Позиционирование в файлах
- •12.9.3. Усечение файлов
- •12.10. Процедуры для работы с каталогами
- •12.11. Обработка ошибок ввода-вывода
- •12.11.1. Функция ioResult
- •12.11.2. Примеры обработки ошибок ввода-вывода
- •12.11.3. Сводка номеров ошибок ввода-вывода
- •Глава 13. Объектно-ориентированное программирование
- •13.1. Определения объектов
- •13.2. Область действия полей объекта и параметр Self
- •13.3. Наследование
- •13.4. Присваивание объектов
- •13.5. Полиморфизм
- •13.5.1. Статические методы
- •13.5.2. Виртуальные методы
- •13.5.3. Выбор вида метода
- •13.6. Динамические объекты
- •13.6.1. Создание динамических объектов
- •13.6.2. Освобождение объектов. Деструкторы
- •13.6.3. Обработка ошибок при работе с динамическими объектами
- •13.7. Функции TypeOf и SizeOf
- •13.8. Задание стартовых значений объектам
- •13.9. Модули, экспортирующие объекты
- •Глава 14. Специальные средства языка
- •14.1. Работа с командной строкой. Функции ParamCount и ParamStr
- •14.2. Доступ к памяти пэвм. Массивы Mem, MemW, MemL
- •14.3. Доступ к портам ввода-вывода. Массивы Port и PortW
- •14.4. Процедура заполнения FillChar
- •14.5. Процедура перемещения данных Move
- •14.6. Функции обработки машинных слов Lo, Hi и Swap
- •14.7. Вставки машинного кода в программе
- •14.7.1. Оператор inline
- •14.7.2. Процедуры с директивой inline
- •14.8. Процедура завершения и обработка ошибок программ
- •14.8.1. Оператор RunError
- •14.8.2. Сводка номеров фатальных ошибок
- •Часть IV. Специальные библиотеки языка
- •Глава 15. Модуль crt
- •15.1. Вывод специальных символов
- •15.2. Модификация операторов Read, ReadLn
- •15.3. Системные переменные модуля crt
- •15.3.1. Переменные управления выводом на дисплей
- •15.3.2. Переменные управления работой клавиатуры
- •15.3.3. Переменная TextAttr
- •15.4. Процедуры и функции модуля crt
- •15.4.1. Работа с экраном в целом
- •15.4.2. Позиционирование курсора
- •15.4.3. Работа со строками
- •15.4.4. Настройка цвета
- •15.4.5. Подача звуковых сигналов
- •15.4.6. Использование встроенного таймера
- •15.4.7. Опрос клавиатуры
- •If KeyPressed then Действие ;
- •15.4.8. Переназначение стандартных файлов
- •Глава 16. Модуль dos
- •16.1. Опрос и установка параметров ms-dos
- •16.1.1. Управление параметрами break и verify 16.1.1.1.
- •16.1.2. Опрос системных переменных ms-dos
- •16.2. Работа с часами и календарем
- •16.2.1. Опрос и назначение даты
- •16.2.3. Работа с датой создания файлов
- •16.3. Анализ ресурсов дисков
- •16.4. Работа с каталогами и файлами
- •16.4.1. Типы и константы модуля dos для работы с файлами
- •16.4.2. Переменная DosError
- •16.4.3. Процедуры поиска файлов на диске
- •16.4.4. Работа с атрибутами файлов
- •16.4.5. Анализ имен файлов
- •16.5. Работа с прерываниями ms-dos
- •16.5.1. Чтение и перестановка адресов подпрограмм прерываний
- •16.5.2. Вызов прерывания процедурой Intr
- •16.5.3. Процедура MsDos
- •6.6. Организация субпроцессов и резидентных программ
- •16.6.1. Программирование субпроцессов
- •Глава 17. Модуль Printer
- •7.1. Содержимое модуля Printer
- •17.2. Низкоуровневые средства работы с принтером
- •17.3. Работа с двумя принтерами одновременно
- •Глава 18. Модуль Overlay
- •18.1. Оверлейное построение программ
- •18.2. Правила оформления оверлейных программ
- •18.3. Инициализация работы оверлеев
- •18.3.1. Включение администратора оверлеев
- •18.3.2. Анализ результата инициализации
- •18.3.3. Размещение оверлейного файла в ems-памяти
- •18.4. Управление оверлейным буфером
- •18.4.1. Опрос размера буфера
- •18.4.2. Установка размера буфера
- •18.4.3. Принудительная очистка буфера
- •18.5. Оптимизация работы оверлеев
- •18.5.1. Установка размера области испытаний
- •18.5.2. Подсчет вызовов оверлеев
- •18.6. Предопределенные переменные для работы с оверлеями
- •18.7. Включение оверлеев в ехе-файлы
- •Глава 19. Модуль Graph
- •19.1. Файлы bgi и содержимое модуля Graph
- •19.2. Управление графическими режимами
- •19.2.1. Инициализация и закрытие графического режима
- •19.2.2. Обработка ошибок инициализации
- •19.2.3. Классификация и анализ графических режимов
- •19.2.4. Очистка экрана и переключение режимов
- •19.2.5. Управление режимом вывода отрезков на экран
- •19.3. Системы координат и «текущий указатель»
- •19.3.1. Координаты устройства и мировые координаты
- •19.3.2. Управление «текущим указателем»
- •19.4. Рисование графических примитивов и фигур
- •19.4.1. Линии и их стили
- •1100110011001100 — Всего 16 разрядов.
- •19.4.2. Коэффициент сжатия изображения
- •19.4.3. Окружности, эллипсы и дуги
- •19.4.4. Построение прямоугольников и ломаных
- •19.5. Управление цветами и шаблонами заливки (заполнения)
- •19.5.1. Немного о цветах
- •19.5.2. Задание типа заливки
- •19.5.3. Заливка областей изображения
- •19.5.4. Опрос и установка цветов пера и фона
- •19.5.5. Управление палитрой
- •19.6. Битовые графические операции
- •19.6.1. Битовые операции
- •19.6.2. Работа с фрагментами изображений
- •19.7. Управление видеостраницами
- •19.8. Графические окна
- •19.9. Вывод текста
- •19.9.1. Выбор шрифта и стиля
- •19.9.2. Предварительная загрузка и регистрация шрифтов
- •19.9.3. Непосредственный вывод строк
- •19.9.4. Размер букв и его масштабирование
- •19.9.5. Опрос стиля и ориентации шрифтов
- •19.10. Включение шрифтов и драйверов в ехе-файл
- •19.11. Подключение новых драйверов
- •19.12. Один полезный совет
- •Часть V. Практические
- •Глава 20. Профессиональная работа с
- •20.1. Программный опрос режимов текстового дисплея
- •20.2. Организация доступа к видеопамяти
- •20.3. Запоминание окон экрана и их восстановление
- •20.3.1. Общие принципы работы с окном
- •20.3.2. Модуль Win
- •20.4. Работа с образом экрана на диске
- •20.5. Крупные надписи на экране
- •20.6. Управление формой курсора
- •Глава 21. Как осуществить полный доступ к клавиатуре
- •21.1. Как организовать опрос алфавитно-цифровой клавиатуры
- •21.2. Опрос клавиши в регистре Ctrl
- •21.3. Опрос расширенных кодов и функциональных клавиш
- •21.4. Опрос служебных клавиш
- •21.5. Анализ клавиш регистров и их состояния
- •21.6. Скэн-коды клавиатуры и работа с ними
- •21.7. Эффект обратной записи в буфер ввода
- •Глава 22. Работа с оперативной
- •22.1. Многобитовое и многоплоскостное озув
- •22.2. Карта дисплейной памяти
- •22.3. Вывод текста на графический экран
- •22.4. Работа с графическими образами на диске
- •Приложение 2 Ключи и директивы компилятора
- •Ключи режимов компиляции
- •Директивы с параметрами
- •Приложение 3
- •Файл tpc.Cfg
- •Приложение 4 Список утилит пакета Турбо Паскаль (версия 5.5)
- •Программа администрирования библиотек
- •Утилита поиска текстов grep
- •Утилита преобразования двоичных файлов binobj
- •Приложение 5
- •Основные команды перемещения курсора
- •Расширенный набор команд перемещения курсора
- •Команды вставки и удаления
- •Команды работы с блоками
- •Поиск и замена
- •Прочие команды
- •Приложение 6
- •If False then Оператор;
- •Приложение 7
- •Глава 6. Управляющие структуры языка
- •Глава 8. Обработка символов и строк
- •Глава 9. Математические возможности Турбо Паскаля
- •Глава 16. Модуль dos
- •Глава 17. Модуль Printer
- •Глава 18. Модуль Overlay
- •Глава 19. Модуль Graph
- •Глава 20. Профессиональная работа с текстовыми изображениями
- •Глава 21. Как осуществить полный доступ к клавиатуре
- •Глава 22. Работа с оперативной памятью видеоадаптеров
- •Литература
- •Оглавление
- •Часть I. Работа в среде программирования
- •Часть II. Язык турбо паскаль
- •Часть III. Средства языка турбо паскаль
- •Часть IV. Специальные библиотеки языка
- •Часть V. Практические приемы работы с пэвм
Приложение 2 Ключи и директивы компилятора
Директивы компилятора Турбо Паскаля управляют режимами компиляции программ в выполнимый код (в памяти или на диске). Они представляют собой комментарии со специальным синтаксисом. Турбо Паскаль допускает директивы компилятора везде, где допускаются комментарии.
Директива компилятора начинается со знака «$», стоящего первым после открывающего граничного знака комментария. Непосредственно после знака «$» следует имя (одна или несколько букв), которое определяет конкретные директивы. Имеются три типа директив:
Ключи выбора режимов. Включают конкретные режимы компиляции или выключают их с помощью указания знаков «+» или «-» сразу после имени ключа.
Директивы с параметрами. Задают параметры, оказывающие влияние на компиляцию, например имена включаемых файлов и размеры памяти.
Директивы (ключи) условной компиляции. Используются для управления порядком компиляции частей исходного текста, основанной на определении пользователем условных символов.
Все директивы за исключением директив переключения должны иметь, по крайней мере, один пробел между именем директивы и параметром.
Директивы компилятора можно разместить непосредственно в исходном коде программы. Можно также изменить применяемые по умолчанию директивы с помощью компилятора, использующего командную строку (ТРС.ЕХЕ) или с помощью компилятора, работающего в диалоговой среде (TURBO.EXE). Все директивы компилятора можно задавать с помощью меню выбора режимов компиляции (Options/Compiler Menu). Все вносимые в меню изменения будут иметь силу при последующих компиляциях. При использовании компилятора ТРС.ЕХЕ директивы компилятора можно либо задавать в командной строке (например, ТРС /$R+ ИмяПрограммы), либо поместить их в файл конфигурации TPC.CFG. Директивы компилятора, которые содержатся в исходном тексте программы, всегда отменяют принятые по умолчанию значения директив.
Ключи режимов компиляции
Выравнивание данных
Синтаксис: {$А+} или {$А-}
Режим по умолчанию: {$А+}
Тип: Глобальный
Эквивалент меню: Option/Compiler/Align Data
Ключ $А позволяет переключаться между выравниванием переменных и {540} типизированных констант по границе слова и по границе байта. Для процессора 8088 выравнивание на границу слова игнорируется, однако для всех процессоров 80X86 такое выравнивание означает более быстрое выполнение, поскольку адресация ко всем элементам, имеющим размер в слово, или четным адресам происходит за один цикл обращения к памяти вместо двух.
В состоянии {$А+} все переменные и типизированные константы, превышающие по размеру один байт, выравниваются по границе машинного слова (адреса с четными значениями). В случае необходимости между переменными для достижения выравнивания по границе слова включаются дополнительные неиспользуемые байты. Ключ {$А+} не влияет ни на переменные размером в байт, ни на поля структур или элементы массивов. Поле записи будет выравниваться по границе слова только в том случае, если общий размер всех следующих перед ним полей будет иметь четное значение. Аналогично, для любого элемента массива выравнивание по границе слова будет иметь место только, когда размер элементов имеет четное значение.
В состоянии {$А-} никаких действий по выравниванию не предпринимается. Переменные и типизированные константы независимо от их размера помещаются в этом случае просто по следующему доступному адресу.
Независимо от режима $А каждое описание VAR и CONST всегда начинается на границе слова. Подобным образом компилятор всегда старается поддерживать указатель стека (SPtr) выравненным по границе слова, для чего в случае необходимости выделяется дополнительный неиспользуемым байт.
Схема логических (Булевских) вычислений
Синтаксис: {$B+} или {$B-}
Режим по умолчанию: ($B-}
Тип: Локальный
Эквивалент меню: Options/Compiler/Boolean Evaluation
Этот ключ определяет два различных вида генерирования кода для булевских операторов and и or.
В состоянии {$В+} компилятор генерирует код для полного вычисления булевского выражения. Это значит, что каждый операнд булевского выражения, состоящий из операторов and и or, будет вычислен даже, если результат всего выражения заранее известен.
В состоянии {$В-} компилятор генерирует код для вычисления булевского выражения по короткой схеме, т. е. вычисление прекратится сразу, как только станет очевидным результат всего этого выражения.
Информация для отладки
Синтаксис: {$D+} или {$D-}
Режим по умолчанию: {$D+}
Тип: Глобальный
Эквивалент меню: Options/Compiler/Debug Information
Данным ключом задается или отменяется генерация информации для отладки. Отладочная информация состоит из таблицы номеров строк для каждой процедуры, устанавливающей соответствие адресов объектных кодов с номерами строк исходного текста. {541}
Когда этот режим включен для программы или модуля, встроенный отладчик Турбо Паскаля позволяет выполнять операторы по шагам и устанавливать в тексте точки останова. Кроме того, при появлении ошибки во время выполнения программы или программного модуля, который был скомпилирован с включенным режимом генерации информации об отладке ({$D+}), Турбо Паскаль может определить оператор в исходном тексте, приведший к появлению ошибки.
Эмуляция математического сопроцессора
Синтаксис: {$Е+} или {$Е-}
Режим по умолчанию: {$E+}
Тип: Глобальный
Эквивалент меню: Options/Compiler/Emulation
Ключ эмуляции разрешает или запрещает компоновку с библиотекой, которая будет эмулировать работу сопроцессора 80X87 в случае его отсутствия. При компиляции программы в состоянии {$N+, E+} Турбо Паскаль выполняет компоновку с полным эмулятором 80X87. Полученный в результате выполнимый файл может использоваться на любой ПЭВМ независимо от наличия сопроцессора 80X87. Если исполняющая система находит такой сопроцессор, то она его использует. В противном случае он эмулируется с помощью средств библиотеки.
В состоянии {$N+, E-} Турбо Паскаль будет выполнять компоновку с существенно меньшей по размеру библиотекой средств работы с плавающей запятой, которая может использоваться только при наличии сопроцессора 80X87.
При использовании в модуле переключатель эмуляции сопроцессора 80X87 не оказывает никакого влияния. Он действует только при компоновке программы.
Выбор модели вызовов (FAR или NEAR)
Синтаксис: {$F+} или {$F-}
Режим по умолчанию: {$F-}
Тип: Локальный
Эквивалент меню: Option/Compiler/Force Far Calls
Ключ компилятора $F управляет выбором типа вызова компилируемых процедур и функций в выполнимом коде. Процедуры и функции, скомпилированные в состоянии {$F+}, всегда используют дальнюю модель обращений (FAR). При указании директивы {$F-} Турбо Паскаль автоматически выбирает соответствующий тип обращений: дальний, если процедура или функция описывается в разделе интерфейса модуля, и ближний (NEAR) в противном случае.
Если программа использует оверлеи, то предполагается, что в начале этой программы и в начале каждого модуля помещен ключ {$F+}, позволяющий построить вызовы по дальней модели. Для программ с процедурными переменными все такие процедуры должны применять вызовы типа FAR. {542}
Режим контроля ввода-вывода
Синтаксис {$I+} или {$I-}
Режим по умолчанию: {$I+}
Тип: Локальный
Эквивалент меню: Option/Compiler/I/O Checking
Ключ $I задает или отменяет автоматическое генерирование кода, проверяющего результат обращения к процедурам ввода-вывода. Если процедура ввода-вывода не может выполниться корректно, то при включенном переключателе {$I+} программа завершает работу, выводя на экран сообщения об ошибке во время выполнения. Если режим отключен ({$I-}), то результат операции ввода-вывода не прервет программы и может быть проанализирован с помощью функции IOResult.
Информация о локальных символах
Синтаксис {$L+} или {$L-}
Режим по умолчанию: {$L+}
Тип: Глобальный
Эквивалент меню: Options/Compiler/Local Symbols
Ключ приводит в действие или отменяет генерацию информации о локальных символах. Информация о локальных символах состоит из имен и типов всех локальных переменных и констант данного модуля, т. е. из символов в секции реализации модуля и символов, содержащихся в процедурах и функциях этого модуля.
Когда для данного модуля задана генерация информации о локальных символах, встроенный отладчик Турбо Паскаля позволяет проверять и модифицировать локальные переменные модуля. Кроме того, с помощью меню Debug/Calls Stack можно проверять обращения к процедурам и функциям модуля.
При включенных режимах Options/Link/Map-File и Debug/Stand-Alone Debugging отладчик позволяет получить информацию о локальных символах данного модуля, если он компилировался в режиме {SL+}.
Для модулей информация о локальных символах записывается в TPU-файле наряду с объектным кодом модуля. Эта информация увеличивает размер файлов (требуется дополнительное пространство), но на размер и скорость работы выполняемой программы это влияния не оказывает.
Ключ, задающий включение информации о локальных символах, обычно используется вместе с ключом отладочной информации, который позволяет включить или выключить генерацию таблицы номеров строк для отладки. Заметим, что в том случае, если режим генерации отладочной информации выключен ({$D-}), директива $L будет игнорироваться.
Режим использования математического сопроцессора
Синтаксис: {$N+} или {$N-}
Режим по умолчанию: {$N-}
Тип: Глобальный
Эквивалент меню: Option/Compiler/Numeric Processing {543}
Этим ключом осуществляется выбор одной из двух моделей генерирования кодов вычислений с плавающей запятой, имеющихся в Турбо Паскале. При указании режима {$N-} генерируется код для программного выполнения всех вещественно-числовых вычислений. При режиме {$N+} генерируется код для выполнения всех таких вычислений аппаратно с помощью математического сопроцессора 80X87.
Заметим, что для эмуляции сопроцессора 80X87 можно также использовать директиву {$Е+}. Это даст возможность применять специальные вещественные типы данных без необходимости установки микросхемы сопроцессора.
Генерация оверлейного кода
Синтаксис: {$О+} или {$О-}
Режим по умолчанию: {$О-}
Тип: Глобальный
Эквивалент меню: Options/Compiler/Overlays Allowed
Ключ режима $О разрешает или запрещает генерацию оверлейного кода. Турбо Паскаль позволяет использовать модуль в качестве оверлейного только в том случае, если он был скомпилирован с директивой {$О+}. В этом случае генератор выполняемого кода принимает особые меры при передаче строки от одного оверлейного модуля другому и при установке постоянных параметров.
Задание данного режима при компиляции модуля не обязывает использовать данный модуль в качестве оверлейного. Режим обеспечивает возможность использования данного модуля в качестве оверлейного, если это потребуется. При разработке модулей, которые планируется использовать как в оверлейном, так и в неоверлейном вариантах, директива {$О+} разрешит и то, и другое.
Ключ режима компиляции {$О+} почти всегда используется совместно с ключом {$F+}, что позволяет выполнить требования подсистемы управления оверлеями по генерации дальнего типа вызовов.
Режим проверки границ (диапазонов)
Синтаксис: {$R+} или {$R-}
Режим по умолчанию: {$R-}
Тип: Локальный
Эквивалент меню: Options/Compiler/Range-Checking
Данный ключ приводит в действие и отменяет генерирование кода проверки границ. При указании {$R+} все выражения с индексированными строками и массивы проверяются на предмет нахождения индекса внутри их границ, а все операторы присваивания скалярным и переменным величинам типа «диапазон» проверяются на принадлежность заданным границам. Если обнаруживается нарушение диапазона, то программа завершает свою работу, выводя сообщения об ошибке времени выполнения. Приведенная в действие проверка границ замедляет работу программы и увеличивает ее размер. Используйте этот режим при отладке, а затем после получения отлаженной программы отмените его. {544}
Режим проверки переполнения стека
Синтаксис {$S+} или {$S-}
Режим по умолчанию: {$S+}
Тип: Локальный
Эквивалент меню: Options/Compiler/Stack-Checking
В зависимости от режима приводится в действие или отменяется генерирование кода проверки переполнения стека. При указании {$S+} компилятор генерирует в начале каждой процедуры или функции код, который проверяет, достаточное ли место в стеке выделено для локальных переменных. Если в стеке места недостаточно, то обращение к процедуре или функции, скомпилированное с указанием {$S+}, приводит к завершению работы программы, которая при этом выводит сообщение об ошибке времени выполнения. При указании {$S-} подобное обращение наиболее вероятно приведет к фатальной ошибке системы («зависанию»).
Режим проверки параметров строкового типа
Синтаксис: {$V+} или {$V-}
Режим по умолчанию: {$V+}
Тип: Локальный
Эквивалент меню: Options/Compiler/Var-String Checking
Ключ $V управляет проверкой типа при передаче строк в качестве параметров-переменных. В состоянии {$V+} выполняется строгая проверка типа, при которой требуется, чтобы формальный и фактический параметр имели идентичные строковые типы. В состоянии {$ V-} в качестве фактического параметра допускается использовать любую переменную строкового типа, даже если ее описанная длина не совпадает с длиной соответствующего формального параметра.
