Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Про глобальный модуль  (Прочитано 1865 раз)

Серега

  • Постоялец
  • ***
  • Сообщений: 209
    • Просмотр профиля
Про глобальный модуль
« : 23 Ноября 2021, 14:54:21 »
Добрый день!
Вопрос на уточнение.
Сколько в проекте может быть глобальных модулей?
По сути он глобальный и должен быть как бы один.
Жду вопросов и предложений.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1175
    • Просмотр профиля
Re: Про глобальный модуль
« Ответ #1 : 24 Ноября 2021, 12:58:09 »
Здравствуйте.

Каких-либо ограничений по количеству глобальных модулей нет. При необходимости, Вы можете создать несколько глобальных модулей.

Виктория

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Re: Про глобальный модуль
« Ответ #2 : 14 Декабря 2021, 10:28:56 »
Как создать большую глобальную процедуру, которая бы включала в себя другую глобальную процедуру?

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 161
    • Просмотр профиля
    • Simple-Scada
Re: Про глобальный модуль
« Ответ #3 : 14 Декабря 2021, 12:50:11 »
Здравствуйте.
Как создать большую глобальную процедуру, которая бы включала в себя другую глобальную процедуру?
Речь идет о вызове функций в глобальном модуле из других глобальных модулей? Для этого нужно подключить глобальный модуль через uses в секции implementation, вот так:
Код: (delphi)
interface

implementation

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

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

end.
« Изменён: 14 Декабря 2021, 13:04:22 от Simple-Scada »

sir

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Про глобальный модуль
« Ответ #4 : 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;
Возможно ли использовать ссылку на переменную типа "Внутренний тег" для передачи в глобальный модуль для сокращения кода?
« Изменён: 21 Сентября 2023, 21:35:05 от sir »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1175
    • Просмотр профиля
Re: Про глобальный модуль
« Ответ #5 : 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.
« Изменён: 24 Сентября 2023, 19:08:39 от Simple-Scada »

sir

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Про глобальный модуль
« Ответ #6 : 24 Сентября 2023, 22:07:41 »
Беру на вооружение. Спасибо!