Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Sungl от 27 Июня 2023, 13:59:24

Название: Переменные из редактора переменных в массив
Отправлено: Sungl от 27 Июня 2023, 13:59:24
Добрый день.
Имеются типовые точки сбора информации об параметрах электросети: Точка1, 2, 3... с одинаковыми наборами тегов. Имеется ли возможность инициализировать каким-то образом массив из ссылок на эти теги TM_Variable непосредственно в имеющемся в Editor-e Редакторе переменных, чтобы потом их передавать пачкой, например конструктору или методу экземпляра класса с целью дальнейших манипуляций их значениями.
На текущий момент, приходится формировать массивы вручную, в коде:
Код: ( delphi)
type
TParAr = Array [0..2] of TM_Variable;

  //Переменные для отчетов присваиваются здесь, хотелось бы найти способ, чтоб избежать этой ручной работы
      vs1[0]:=p1Ua;
      vs1[1]:=p1Ub;
      vs1[2]:=p1Uc;
      cs1[0]:=p1Ia;
      cs1[1]:=p1Ib;
      cs1[2]:=p1Ic;
      ps1[0]:=p1Wa;
      ps1[1]:=p1Wb;
      ps1[2]:=p1Wc;
      wps1[0]:=p1WPa;
      wps1[1]:=p1WPb;
      wps1[2]:=p1WPc;

      //пакуем данные в объекты
      Point1.Pack(vs1,cs1,ps1,wps1,p1WGeneral, p1WSum);
метод Pack объекта "Точка"
Код: (delphi)
procedure TPowerPoint.Pack (var voltages, currents, powers, wp: TParAr; var wGeneral, wSum:TM_Variable);
var
  i:Integer;
begin

      Self.wGeneral:=wGeneral;
      Self.wSum:=wSum;

     for i:=0 to 2 do begin
         Self.voltages[i]:=voltages[i];
         Self.currents[i]:=currents[i];
         Self.powers[i]:=powers[i];
         Self.wp[i]:=wp[i];
     end;
end;
Хочется как-то избежать такой "ручной" инициализации во избежание ошибок. Есть ли такой способ?
Название: Re: Переменные из редактора переменных в массив
Отправлено: Simple-Scada от 29 Июня 2023, 10:45:49
Здравствуйте.

Цитировать
Имеется ли возможность инициализировать каким-то образом массив из ссылок на эти теги TM_Variable непосредственно в имеющемся в Editor-e
Если имена у переменных однотипные, то можно получать переменные по имени, через через GetVariableByName (https://simple-scada.com/help/script/getvariablebyname.html), подставляя номер в имя.

Также, в 90% случаев задачу можно решить без использования классов, напрямую, с помощью универсальных скриптов, шаблонов и т.п. Если есть желание, то можете выслать текущую версию проекта на support@simple-scada.com с максимально подробным описанием задачи, которую нужно решить, мы опишем наилучший вариант решения.