Глобальный модуль можно создать через редактор скриптов, выбрав в списке событий тип "Глобальный модуль":
Использование глобальных модулей позволяет сократить повторяющийся код в скриптах, улучшить читаемость кода и скорость компиляции скриптов проекта.
Код модуля по умолчанию выглядит так:
interface
implementation
end.
В области от ключевого слова "interface" до слова "implementation" размещается определение внешнего интерфейса модуля, т.е. определения, видимые извне (из других скриптов). В области от "implementation" до "end." размещается реализация интерфейса. Например, нам требуется объявить в модуле функцию, которая будет возвращать результат сложения двух целых чисел. Опишем эту функцию в области реализации (т.е. после "implementation"):
interface
implementation
// функция сложения двух чисел
function mySum(A, B: Integer): Integer;
begin
Result := A + B;
end;
end.
Функция описана, но использовать её из других скриптов мы не сможем, т.к. она не вынесена во внешний интерфейс модуля и сейчас является локальной функцией нашего модуля. Чтобы сделать её глобальной (видимой для всех скриптов), достаточно вынести заголовок функции в область интерфейса:
interface
function mySum(A, B: Integer): Integer;
implementation
// функция сложения двух чисел
function mySum(A, B: Integer): Integer;
begin
Result := A + B;
end;
end.
Теперь мы можем использовать нашу глобальную функцию в любом скрипте проекта, например:
var
aNum1, aNum2, aSum: Integer;
begin
aNum1 := 10;
aNum2 := 15;
aSum := mySum(aNum1, aNum2); // в aSum запишется результат равный 25
end.
Аналогично, в глобальных модулях можно объявлять глобальные переменные:
Важно! Использование глобальных переменных является плохим тоном. Вместо этого рекомендуется создавать внутренние переменные через редактор переменных. В частности, не рекомендуется объявлять в глобальных модулях переменные строковых типов из-за особенностей их хранения в памяти.
interface
var
// эта глобальная переменная будет доступна из всех скриптов
myGlobalVar: Integer;
implementation
end.