1.2.40. $I или $INCLUDE : Подключить файл

На верх  Назад  Вперёд

Директива {$I ИмяФайла} или {$INCLUDE ИмяФайла} указывает компилятору, что следующие операторы нужно читать из файла ИмяФайла. Операторы из этого файла будут вставлены в код, как если бы они имелись в текущем файле.

Если файл с указанным именем существует, то он будет включен в текст программы. Если расширение не указано, компилятор добавит к файлу ИмяФайла расширение .pp.Другие файлы с этим именем и с другими расширениями не ищутся.

Имя файла может быть помещено в одинарные кавычки, они не рассматриваются как часть имени файла. Если имя файла содержит пробел, то оно должно быть заключено в одинарные кавычки

Директива

{$I 'my file name'}

пытаться включить файл my file name или my file name.pp.

А директива

{$I my file name}

попытается включить файл my или my.pp.

Если вместо имени файла будет звездочка (*), то компилятор будет использовать имя модуля или имя программы в качестве имени файла и попытаться добавить его содержимое. Следующий код

unit testi;
 
interface
 
{$I *}
 
implementation
 
end.

будет включает в себя файл testi  или testi.pp, если они существуют.

Type
A = Integer;

Следует быть осторожным с этим механизмом, потому что имя модуля уже должен соответствовать имени файла модуля, а это будет рекурсивное включение модуля.

Подключаемые файлы могут быть вложенными, но не бесконечно глубоко. Количество файлов ограничено количеством файловых дескрипторов, доступных компилятору Free Pascal.

В отличие от Turbo Pascal, подключаемые файлы могут составлять сквозные блоки, то есть блок кода может начаться в одном файле (с ключевого слова Begin), а закончиться в другом файле (ключевым словом End). Наименьший элемент в подключаемом файле должен быть лексемой, то есть идентификатор, ключевое слово или оператор.

Компилятор будет искать подключаемые файлы в следующих местах:

1.Путь, указанный в имени подключаемого файла

2.Каталог, где находится текущий исходный файл

3.Путь, указанный в настройках для подключаемых файлов

Каталоги, где будет выполняться поиск подключаемых файлов, можно добавить с помощью опции командной строки -Fi.