Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: SID от 20 Ноября 2023, 06:31:09

Название: Перечисление имен переменных. Работа с множеством переменных.
Отправлено: SID от 20 Ноября 2023, 06:31:09
Здравствуйте! На сколько я понял проблема с массивами ограничена тем что их можно только читать при работе с OPC сервером. Задача, как пример,120 переменных связанных с OPC. Имена Block1, Block2 ...Block120. Допустим хочу присвоить всем 120 значение 1, в каком виде это возможно представить если нельзя использовать массив и цикл for? как подставить номер имени переменной?

   Block1.Value := 1;
   Block2.Value := 1;
   ...
   Block120.Value := 1;
Название: Re: Перечисление имен переменных. Работа с множеством переменных.
Отправлено: Simple Scada от 20 Ноября 2023, 11:01:23
Здравствуйте!

В данном случае можно использовать цикл for и функцию GetVariableByName (https://simple-scada.com/help/script/getvariablebyname.html) для поиска переменных по имени:
Код: (delphi)
var
  i: integer;
  aVar: TM_Variable;
begin
  for i := 1 to 120 do
  begin
    aVar := GetVariableByName('Block' + IntToStr(i)); // ищем переменную с именем Block№
    if aVar <> nil then     // если переменная существует
      aVar.Value := 1;        // то, записываем в нее 1
  end;
end.
Название: Re: Перечисление имен переменных. Работа с множеством переменных. Delphi
Отправлено: SID от 20 Ноября 2023, 11:22:07
Все работает. Конструкцию понял, огромное спасибо)