Всем привет.
При создании пользовательских блоков, мы добавляем входы и выходы, чтобы связать, переменные, объявленные в проекте с теми, которые используем внутри блоков. Задумал я написать блок инициализации переменных с карты памяти при включении контроллера. Мне надо подгрузить около 30 переменных. Получается, чтобы передать их из пользовательскго блока , мне надо создать 30 "холостых" переменных, которые бы просто связывали функционал блока с проектом. Это не есть хорошо и в отдельных случаях может довести объем памяти, занимаемый переменными, до критической массы.
Отсюда логичный вопрос: как избавиться от "холостых" переменных? Я бы сказал, что если бы в настройках проекта была галочка "Сохранять имена переменных при компиляции", то она бы проблему решила. Но сейчас такого нет и я в раздумьях.
Как уменьшить количество переменных в ПБ?
Как уменьшить количество переменных в ПБ?
Последний раз редактировалось igee 10 мар 2017, 10:53, всего редактировалось 1 раз.
- support
- Супермодератор
- Сообщения: 1902
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Контактная информация:
Как уменьшить количество переменных в ПБ?
Тут всё не так просто.igee писал(а):Я бы сказал, что если бы в настройках проекта была галочка "Сохранять
имена переменных при компиляции", то она бы проблему решила.
Во первых откуда мы знаем что на входе будет переменная? Например в случае использования блока сравнения передача передача значения в блок через вход будет выглядеть так
Код: Выделить всё
ИмяСтуктурыБлока.ИмяВхода=(переменная1<переменной2);
Автор программы FLProg.
Как уменьшить количество переменных в ПБ?
Если блок - это функция, можно ведь добавить разновидность пользовательских блоков CODE для работы именно с переменными проекта. В качестве аргументов использовать ссылки, с которыми будем работать в теле функции, а результатом выполнения функции как раз будет изменение переменных проекта.
Код: Выделить всё
void user_block(int &project_var)
{
project_var++;
}
...
int counter= 5; // переменная проекта
user_block (counter);// counter равен 6
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей