Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Серега от 23 Ноября 2021, 14:54:21

Название: Про глобальный модуль
Отправлено: Серега от 23 Ноября 2021, 14:54:21
Добрый день!
Вопрос на уточнение.
Сколько в проекте может быть глобальных модулей?
По сути он глобальный и должен быть как бы один.
Жду вопросов и предложений.
Название: Re: Про глобальный модуль
Отправлено: Simple_Scada от 24 Ноября 2021, 12:58:09
Здравствуйте.

Каких-либо ограничений по количеству глобальных модулей нет. При необходимости, Вы можете создать несколько глобальных модулей.
Название: Re: Про глобальный модуль
Отправлено: Виктория от 14 Декабря 2021, 10:28:56
Как создать большую глобальную процедуру, которая бы включала в себя другую глобальную процедуру?
Название: Re: Про глобальный модуль
Отправлено: Simple Scada от 14 Декабря 2021, 12:50:11
Здравствуйте.
Как создать большую глобальную процедуру, которая бы включала в себя другую глобальную процедуру?
Речь идет о вызове функций в глобальном модуле из других глобальных модулей? Для этого нужно подключить глобальный модуль через uses в секции implementation, вот так:
Код: (delphi)
interface

implementation

//подключаем глобальный модуль
uses
  GlobalUnit1;

procedure myProcUnit2;
begin
  myProcUnit1;  // используем процедуру из глобального модуля GlobalUnit1
end;

end.
Название: Re: Про глобальный модуль
Отправлено: sir от 21 Сентября 2023, 17:26:23
Здравствуйте!
Вопрос по использованию переменных типа "Внетренний тег. Виртуальная переменная" в передаче в качестве ссылки в глобальный модуль.
Например, в проекте есть Переменная типа Byte, с именем Vdata1
Я хочу передать ссылку в глобальный модуль на эту переменную Byte:
Код: (delphi)
Vdata1.Value;
Глобальный модуль типа:
Код: (delphi)
GlobModul (var data1: Byte): Byte;
Но компилятор ругается, т.к. не может передать ссылку на эту переменную.
Выход из этой ситуации - использовать переменную, объявленную внутри функции:
Код: (delphi)
var
  Fdata: Byte;
begin
  Fdata := Vdata1.Value;
  GlobModul (Fdata);
  Vdata1.Value := Fdata;
end;
Возможно ли использовать ссылку на переменную типа "Внутренний тег" для передачи в глобальный модуль для сокращения кода?
Название: Re: Про глобальный модуль
Отправлено: Simple_Scada от 24 Сентября 2023, 19:00:00
Здравствуйте.

Цитировать
Возможно ли использовать ссылку на переменную типа "Внутренний тег" для передачи в глобальный модуль
Да, это возможно. Внутренние и внешние переменные в Simple-Scada являются объектами типа TM_Variable. Передать переменную в глобальный модуль можно следующим образом:
Пример объявления в глобальном модуле:
Код: (delphi)
interface
procedure GlobModul(aVar: TM_Variable);

implementation

procedure GlobModul(aVar: TM_Variable);
begin
  aVar.Value := 15; // выполняем требуемые операции с переданной в процедуру переменной
end;

end.

Пример использования:
Код: (delphi)
begin
  GlobModul(Vdata1);
end.
Название: Re: Про глобальный модуль
Отправлено: sir от 24 Сентября 2023, 22:07:41
Беру на вооружение. Спасибо!