Добрый день, коллеги!
Подскажите, как использовать функцию RESIZE_ARRAY();. Там три входных параметра и не очень ясно, что туда нужно передавать.
Вид для печати
Добрый день, коллеги!
Подскажите, как использовать функцию RESIZE_ARRAY();. Там три входных параметра и не очень ясно, что туда нужно передавать.
IN1 - входной массив
IN2 - значения для новых элементов
IN3 - новое количество элементов
Q - получившийся измененный массив
Спасибо за ответ! Но появился новый вопрос: У меня объявлен безразмерный массив структур для передачи данных в таблицу данных. С помощью Resize_array() теперь получилось заполнить его значениями выходных массивов READ_ARCHIVE_DATA() и вывести их в таблицу. Но Resize_array() срабатывает только первый раз. После этого изменение размера больше не происходит, хотя счетчик увеличивается. Код (Completed, Count, Values[], Times [] передаются из READ_ARCHIVE_DATA() ):
IF Completed THEN
ARCH := RESIZE_ARRAY(ARCH, Init_Struct, Count);
FOR i := 1 to Count DO
ARCH[i].Values := Values[i];
ARCH[i].Times:=Times[i];
END_FOR;
END_IF;
Разобрался. Так гораздо лучше :)
PROGRAM Программа_массив_структур_ID_58520
VAR_INPUT
Completed: BOOL := False;
Count: UINT := 0;
Values: ARRAY[*] OF LREAL;
Times: ARRAY[*] OF DATE_AND_TIME;
END_VAR
VAR_IN_OUT
ARCH: ARRAY[*] OF Структура_Values_Times;
END_VAR
VAR_OUTPUT
EnO: BOOL := True;
END_VAR
VAR
i: UINT := 0;
Init_Struct: Локальная.Структура_Values_Times := (Values := 0, Times := DT#0001-01-01-00:00);
ARCH_1: ARRAY[*] OF Структура_Values_Times;
END_VAR
IF Completed THEN
ARCH := RESIZE_ARRAY(ARCH_1, Init_Struct, Count_1);
FOR i := 1 to Count DO
ARCH[i].Values := Values[i];
ARCH[i].Times:=Times[i];
END_FOR;
END_IF;
END_PROGRAM