Страница 1 из 1

Как уменьшить количество переменных в ПБ?

Добавлено: 10 мар 2017, 10:41
igee
Всем привет.
    При создании пользовательских блоков, мы добавляем входы и выходы, чтобы связать, переменные, объявленные в проекте с теми, которые используем внутри блоков. Задумал я написать блок инициализации переменных с карты памяти при включении контроллера. Мне надо подгрузить около 30 переменных. Получается, чтобы передать их из пользовательскго блока , мне надо создать 30 "холостых" переменных, которые бы просто связывали функционал блока с проектом. Это не есть хорошо и в отдельных случаях может довести объем памяти, занимаемый переменными,  до критической массы.
    Отсюда логичный вопрос: как избавиться от "холостых" переменных? Я бы сказал, что если бы в настройках проекта была галочка "Сохранять имена переменных при компиляции", то она бы проблему решила. Но сейчас такого нет и я в раздумьях.

Как уменьшить количество переменных в ПБ?

Добавлено: 10 мар 2017, 12:01
support
igee писал(а):Я бы сказал, что если бы в настройках проекта была галочка "Сохранять
имена переменных при компиляции", то она бы проблему решила.
Тут всё не так просто.
Во первых откуда мы знаем что на входе будет переменная? Например в случае использования блока сравнения передача передача значения в блок через вход будет выглядеть так

Код: Выделить всё

ИмяСтуктурыБлока.ИмяВхода=(переменная1<переменной2);
ну и вторая сложность - блоки компилируются в функцию, которой передаётся инстанс структуры привязанный к конкретному блоку. Названия переменных (входы, выходы переменные внутри блока) описанны в структуре. так что использовать переменные проекта нельзя.

Как уменьшить количество переменных в ПБ?

Добавлено: 10 мар 2017, 12:57
igee
Если блок - это функция, можно ведь добавить разновидность пользовательских блоков CODE для работы именно с переменными проекта. В качестве аргументов использовать ссылки, с которыми будем работать в теле функции, а результатом выполнения функции как раз будет изменение переменных проекта.  


Код: Выделить всё

void user_block(int &project_var) 
{ 
project_var++;
} 
...
int counter= 5; // переменная проекта
user_block (counter);// counter равен 6