av писал(а): 22 июл 2020, 06:11
[ref=#00aa00]support[/ref], спасибо за подсказку ! Попробую сделать по вашему шаблону. А потом сравню какой из вариантов более предпочтительней и удобней.
Немного не успел закончить ответ. У меня кончилась ночная смена, и я торопился на автобус.
Продолжим.
Предыдущий вариант не очень оптималел но нагляден. В нем для каждого экземпляра блока создается отдельный массив, что занимает лишнюю в принципе память.
Немного оптимизируем.
В секции Declare каждого инстанса ничего писать не будем. А перенесём объявление массива в конец секции Declare Общего коды (на самом верху дерева редактора)
Поскольку этот код вставляется один раз, то идентификатор инстанса всавлять не надо (да и там его невозможно вставить).
Выглядеть это будет где то так
int Array_MyBlock_12343[10];
Почему 10 элементов - а что бы хватило на все типы блоков. В процессе создания блоков количество элементов уточнится
Соответственно код элементов блоков изменится
код1 - если истинно условие -( Задание центра =" константа").
Array_MyBlock_12343[0] =<Центр X_Par>;
Array_MyBlock_12343[1] =<Центр Y_Par>;
код2 - если ложно условие -( Задание центра =" константа").
Array_MyBlock_12343[0] =<Центр X>;
Array_MyBlock_12343[1] =<Центр Y>;
код3 - если истинно условие -( Задание Радиуса =" константа")..
Array_MyBlock_12343[2] =<Радиус_Par>;
код4 - если ложно условие -( Задание Радиуса =" константа").).
Array_MyBlock_12343[2] =<Радиус>;
код5 - если истинно условие -( Задание цвета =" константа")..
Array_MyBlock_12343[3] =<Цвет_Par>;
код6 - если ложно условие -( Задание цвета =" константа").).
Array_MyBlock_12343[3] =<Цвет>;
код 7 - нет условия
lcd.paintCicle(Array_MyBlock_12343[0],Array_MyBlock_12343[1],Array_MyBlock_12343[2],Array_MyBlock_12343[3]);
То есть мы использовали массив как временное хранилище значений, и тут же использовали их.
В остальных блоках так же используем этот же массив.
Этот вариант более экономичен в отношении памяти.
Есть ещё более красивый но ещё менее наглядный вариант. Не используем никаких массивов вообще! Нигде его не объявляем
Код будет выглядеть тогда так
код 0 - нет условия
lcd.paintCicle(
код1 - если истинно условие -( Задание центра =" константа").
<Центр X_Par>, <Центр Y_Par>,
код2 - если ложно условие -( Задание центра =" константа").
<Центр X>, <Центр Y>,
код3 - если истинно условие -( Задание Радиуса =" константа")..
<Радиус_Par>,
код4 - если ложно условие -( Задание Радиуса =" константа").).
<Радиус>,
код5 - если истинно условие -( Задание цвета =" константа")..
<Цвет_Par>
код6 - если ложно условие -( Задание цвета =" константа").).
<Цвет>
код 7 - нет условия
);
Естевственно никаких переносов строк в элементах кода быть не должно.