Здравствуйте!
Массивы нужно раскладывать по виртуальным переменным, а затем работать с этими переменными. Массивы доступны только для чтения. Если есть возможность, то лучше обойтись без использования массивов, т.к. работа со стандартными переменными напрямую будет более оптимальной.
У каждой переменной есть свойства для работы с массивами:
property LowBound: Integer;
Возвращает начальный индекс массива
property HighBound: Integer;
Возвращает конечный индекс массива
property Values[AIndex: Integer]: Variant;
Возвращает значение с индексом AIndex из массива.
property ValuesStr[AIndex: Integer]: string;
Возвращает значение с индексом AIndex из массива переведённое в строку.
Рассмотрим простой пример. Допустим у нас есть переменная массив (строк) с именем vrMyArray и нам нужно разложить массив по трём отдельным внутренним переменным vrStr1, vrStr2, vrStr3. Тогда решение будет таким:
1. Переходим в меню скриптов и создаем новый скрипт с типом события (https://simple-scada.com/help/script/event-types.html) "Изменились переменные". В список переменных добавляем нашу переменную-массив vrMyArray (как в этой инструкции (https://simple-scada.com/help/script/changemulvar.html)). Теперь этот скрипт будет вызываться каждый раз когда переменная-массив изменилась.
2. Пишем такой код в скрипт:
begin
vrStr1.Value := Variable.ValuesStr[0];
vrStr2.Value := Variable.ValuesStr[1];
vrStr3.Value := Variable.ValuesStr[2];
end.
Готово. В скрипте мы в переменную vrStr1 записываем первое значение из массива. В vrStr2 второе значение из массива и так далее. Такой способ подходит если нам точно известно, что массив содержит три элемента. Если массив может содержать любое количество элементов, или его размер меняется во время работы проекта, то нужно проходить по элементам массива в цикле, например так:
var
I: Integer;
begin
// проходим в цикле по каждому элементу массива
for I := Variable.LowBound to Variable.HighBound do
Text1.Text := Text1.Text + ', ' + Variable.ValuesStr[I];
end.