В сценариях вы можете объявить и использовать пользовательские функции.
Объявление пользовательской функции состоит из списка формальных параметров и выражений, которые в совокупности представляют собой последовательность определённых операций, записанных пользователем. Результат всех этих операций вычисляется при каждом обращении к данной функции. Имена параметров, определённые в выражении функции, обрабатываются как обычные переменные.
Формальный синтаксис объявления пользовательских функций обеспечивается директивой define. В файле ISPPBuiltins.iss вы найдете множество примеров этих функций.
Пожалуйста, обратите внимание, что при записи между именем функции и круглой открывающей скобкой не должно быть пробела.
Фактические параметры, объявленные в качестве ссылок, должны быть изменяемыми l-значениями (другими словами, это значение, полученное при помощи одного или нескольких аргументов операции). Если выражение функции изменяет параметр передаваемый по ссылке, то переменная, которая передается в качестве этого параметра, также изменяется. По значению параметров можно также изменить выражение функции (используя операторы присваивания), но это изменение не влияет на значение переменной, которая передается в качестве параметра.
Хотя пользовательская функция может содержать только одно выражение, но операторы последовательной оценки (comma), операторы присваивания (простые и сложные), а также условные операторы (?:) могут использоваться для построения более сложных функций.
В выражении функции допускается использовать дополнительный массив с именем Local. Его элементы могут быть задействованы в качестве временного хранения данных и повторного использования промежуточных значений выражения. Этот массив Local принадлежит только той функции, в которой он был вызван, и его данные недоступны за пределами самой функции, включая их сохранение.
#define DeleteToFirstPeriod(str *S) /* объявление пользовательской функции */ \ Local[1] = Copy(S, 1, (Local[0] = Pos(".", S)) - 1), \ S = Copy(S, Local[0] + 1), \ Local[1]