Показано с 1 по 8 из 8

Тема: Реинициализация массива

  1. #1

    По умолчанию Реинициализация массива

    Доброй ночи!

    Уточните, пожалуйста по следующей ситуации:

    Имеется массив, инициализация (присваивание значений) проводится при объявлении.:
    Код:
     PRG_STEP : ARRAY[0..9] OF ARRAY[1..100] OF ARRAY[1..5] OF REAL:= 
    [ 
    [ 													   
    [1,1700,0,0,1], [2,1300,0,0,2], [1,1700,0,0,1], [2,1300,0,0,2], [1,1700,0,0,1], и т.д
    ],[ 
    [1,1700,0,0,1,0], [2,1300,0,0,1,0], [1,1700,0,0,1,0], [2,1300,0,0,1,0], и т.д
    ],[ 
    и т.д.
    Возможно реинициализировать его из кода программы, т.е. присвоить новые значения комплексно, т.е. также, как и при объявлении?

    Спасибо,

  2. #2

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    В коде присвоить массиву массив с константами
    Не обязательно.
    Можно и по отдельности каждому элементу новое значение присвоить и не обязательно это в константы впихивать.
    Например: первоначальная инициализация это параметры по умолчанию при запуске (ip параметры сети, например), которые вы можете потом поменять при помощи кода в программе. Вот тут кстати можно использовать массив объявленный в константах, который для возврата к параметрам по умолчанию можно использовать. Но инициализированный массив тогда надо в ретейн вставлять, чтоб при запуске ПЛК переменные не затерлись.

  3. #3

    По умолчанию

    Спасибо,

    По отдельности менять не очень хочется, т.к. условно, 100 блоков по 5 разных значений по одному прописывать некомфортно.
    К примеру первому элементу массива
    PRG_STEP[0]
    Нужно изменить 50 блоков подмассива с еще одним подмассивом. Т.е. нужно заменить
    PRG_STEP[0] [1-50][1-5]

    Данные подмассивов известны и могут быть изначально записаны в отдельный массив.
    Как текущему многоуровнему массиву [0]присвоить сразу весь массив из 2х подмассивов
    PRG_STEP[0]:=[ [1,2,3,4,5], [1,2,3,4,5], и т.д

    Вышеописанный вариант не работает) а хотелось бы нечто подобное, если возможно

  4. #4

    По умолчанию

    capzap,

    Можете на моем примере (PRG_STEP[0]:=[ [1,2,3,4,5], [1,2,3,4,5] ) написать, как правильно сделать, т.к. у меня пишет - неверная инициализация массива

    Спасибо,

  5. #5

    По умолчанию

    50capzap,

    Спасибо)

    Пошел более простым путем)

    ПЫСЫ: 50capzap пропал(
    Последний раз редактировалось ShikuS; 28.11.2023 в 15:48.

  6. #6
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Цитата Сообщение от ShikuS Посмотреть сообщение
    ... неверная инициализация массива...
    без скобок (во всяком случае в КДС2)

  7. #7
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    ++ ли КДС3 - х.з. А в КДС2:
    Цитата Сообщение от ShikuS Посмотреть сообщение
    ..
    Как текущему многоуровнему массиву [0]присвоить сразу весь массив из 2х подмассивов
    PRG_STEP[0]:=[ [1,2,3,4,5], [1,2,3,4,5], и т.д
    Т.к. типы внизу - разные
    Цитата Сообщение от ShikuS Посмотреть сообщение
    ...т.к. условно, 100 блоков по 5 разных значений ...
    Нужно изменить 50 блоков подмассива с еще одним подмассивом.
    .. то только SysLibMem (ниже) или циклы (их сами)

    Код:
    VAR CONSTANT
    	C : ARRAY[1..50,1..5] OF REAL := ....
    END_VAR
    VAR
    	X : ARRAY[0..9] OF ARRAY[1..100,1..5] OF REAL;
    END_VAR
    Нужно изменить (только?) 50 блоков подмассива с еще одним подмассивом ?
    Код:
    SysMemCpy(ADR(X[0]), (*<=*) ADR(C), SIZEOF(C));
    (КДС3 сейчас нет, но т. к. capzap говорил про указатели, думаю он предложил аналогичное)


    А коли бы не просрали тип
    Код:
    VAR CONSTANT
    	C : ARRAY[1..50,1..5] OF REAL := ....
    END_VAR
    VAR
    	X : ARRAY[0..9] OF ARRAY[1..50,1..5] OF REAL;
    END_VAR
    то просто:
    Код:
    X[0] := C;
    Потаму как это тоже самое что:
    Код:
    TYPE TShikuS :
    	ARRAY[1..50,1..5] OF REAL;
    END_TYPE
    
    VAR CONSTANT
    	C : TShikuS := ....
    END_VAR
    VAR
    	X : ARRAY[0..9] OF TShikuS;
    END_VAR
    да и яснее же ?
    Последний раз редактировалось Валенок; 28.11.2023 в 23:08.

  8. #8

    По умолчанию

    Валенок,

    Спасибо, все подробно расписали)

Похожие темы

  1. Отображение массива в MasterScada
    от Serge1 в разделе Master SCADA 4D
    Ответов: 4
    Последнее сообщение: 17.11.2023, 11:16
  2. Объявление массива
    от Newcomer в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 3
    Последнее сообщение: 09.04.2022, 15:13
  3. Сдвиг массива (не циклический)
    от Рашид в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 27.07.2017, 10:55
  4. Способы сброса массива
    от Dry fig в разделе СПК2хх
    Ответов: 3
    Последнее сообщение: 23.09.2016, 14:33
  5. инициализация массива структур
    от drvlas в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 16.12.2010, 18:31

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •