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

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

Автор Тема: Перечисление имен переменных. Работа с множеством переменных.  (Прочитано 2092 раз)

SID

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Здравствуйте! На сколько я понял проблема с массивами ограничена тем что их можно только читать при работе с OPC сервером. Задача, как пример,120 переменных связанных с OPC. Имена Block1, Block2 ...Block120. Допустим хочу присвоить всем 120 значение 1, в каком виде это возможно представить если нельзя использовать массив и цикл for? как подставить номер имени переменной?

   Block1.Value := 1;
   Block2.Value := 1;
   ...
   Block120.Value := 1;
« Изменён: 20 Ноября 2023, 11:19:42 от Simple_Scada »

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 288
    • Просмотр профиля
    • Simple-Scada
Здравствуйте!

В данном случае можно использовать цикл for и функцию GetVariableByName для поиска переменных по имени:
Код: (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.
« Изменён: 20 Ноября 2023, 11:25:39 от Simple-Scada »

SID

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Все работает. Конструкцию понял, огромное спасибо)
« Изменён: 20 Ноября 2023, 11:25:11 от Simple-Scada »