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

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

Автор Тема: Переменные из редактора переменных в массив  (Прочитано 1421 раз)

Sungl

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Добрый день.
Имеются типовые точки сбора информации об параметрах электросети: Точка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;
Хочется как-то избежать такой "ручной" инициализации во избежание ошибок. Есть ли такой способ?
« Изменён: 27 Июня 2023, 14:22:50 от Simple Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Здравствуйте.

Цитировать
Имеется ли возможность инициализировать каким-то образом массив из ссылок на эти теги TM_Variable непосредственно в имеющемся в Editor-e
Если имена у переменных однотипные, то можно получать переменные по имени, через через GetVariableByName, подставляя номер в имя.

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