{$R-} отключить проверку диапазонов индексов массивов;
{$N+} использовать сопроцессор 80Х87 и т.д.
Список ключей компиляции приведен в Приложении 2. Можно объединять ключи в один комментарий:
{$N+,R-}
Открывающие скобки, символ «$» и ключ должны быть написаны без пробелов между ними. Подобные конструкции можно вставлять в программу, и при компиляции она сама будет задавать режим работы компилятора. Ключи подразделяются на глобальные (раз установленный режим уже не может измениться) или локальные (можно изменять режимы для разных частей программы). Глобальные ключи должны стоять в начале программы, а локальные — где угодно программисту. Стартовые значения ключей (значения по умолчанию) задаются в среде программирования посредством меню Options/Compiler.
Некоторые ключи задают не режим, а компоновку программы из внешних составных частей. Таков, например, ключ
{$I ИмяФайлаВключения}
- 56 -
называемый командой включения в программу внешнего текстового файла. Обратите внимание на отсутствие знаков «+» или «-». Вместо них стоит пробел и имя файла. Эта команда заставляет компилятор считать заданный внешний файл частью обрабатываемой программы, т.е. отлаженные законченные блоки текста могут быть записаны на диск и заменены в программе на команды их включения. Это немного замедляет процесс компиляции, но может сэкономить массу места в программе, так как последняя превращается в «цепочку» различных файлов на диске. Примеры задания включения файлов-блоков:
{$I incproc.pas}, или, что то же самое,
{$I incproc},
{$I c:\pascal\pas\graf.inc},
{$I ..\USER\Block1.blk}
Текст включаемого блока должен удовлетворять двум условиям: будучи подставленным на место соответствующей команды {$I...}, он обязан вписаться в структуру и смысл программы без ошибок и должен содержать законченный смысловой фрагмент. Последнее означает, что блок от BEGIN до END (например, тело процедуры) должен храниться целиком в одном файле.
Включаемые тексты сами могут содержать команды {$I...}, вставляющие как бы уже дважды вложенные тексты, а те, в свою очередь, тоже могут содержать директивы {$I...}. Максимальный уровень подобной вложенности равен восьми.
Кроме текстов, можно включать коды в формате OBJ, полученные другими компиляторами или утилитами. Включаемые коды, конечно, не компилируются, но подключаются к выполнимому коду программы на этапе компоновки. В них должны содержаться реализации внешних процедур и (или) функций. Включение происходит почти так же, как и для текстовых блоков:
{$L code.obj}
или, что то же самое,