insert-directive: | insert <expr> |
Выполняет вставку указанного выражения (expr). По умолчанию каждая обработанная строка сценария добавляется в конец данных вывода препроцессора, формируя таким образом определённую последовательность команд, которые будут переданы компилятору. Используя директиву insert, в процесс обработки данных вывода препроцессора можно вставить строку, которая изменит обычный порядок команд. При чтении строк сценария, транслятор, встретив директиву insert, выполнит вставку кода, которая указана выражением директивы, после чего перейдет к чтению следующей за директивой строке.
Использование директивы отмечается специальным счетчиком, значение которого автоматически увеличивается на единицу после каждой операции вставки в данные вывода препроцессора. Таким образом, каждая новая строка будет добавлена после строк, вставленных предыдущей командой.
Не рекомендуется использовать директиву совместно с функциями компоновки сценариев (например, SetSetupSetting), которые самостоятельно позволяют вставить строку. Они смещают часть кода, но не обновляют значение счетчика вставки. Это может привести к другой точке возврата в коде сценария, нарушив его алгоритм.
Чтобы получить необходимое значение (выражение) для директивы insert, можно использовать функцию Find.
// Вставка строки, идущей после секции [Icons]. #insert FindSectionEnd("Icons") // Вставка 2 строки, идущей после объявления секции [Setup]. #insert FindSection("Setup") + 1 // Вставка строк, которые содержат подстроку "somefile.ext" // (поиск необходимых строк выполняет функция Find). #insert Find(0, "somefile.ext", FIND_CONTAINS)