Пожалуйста, включите JavaScript для просмотра этого сайта.

Скрипты Simple-Scada

История: Типы событий > Основные

Глобальный модуль

Пред. Вверх След. Еще

Глобальный модуль можно создать через редактор скриптов, выбрав в списке событий тип "Глобальный модуль":

Использование глобальных модулей позволяет сократить повторяющийся код в скриптах, улучшить читаемость кода и скорость компиляции скриптов проекта.

Код модуля по умолчанию выглядит так:

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.