Лайфхаки (Маленькие хитрости) А так можно было?!

CTAPuK
Рядовой
Сообщения: 70
Зарегистрирован: 06 дек 2020, 20:41
Имя: Михаил
Благодарил (а): 1 раз

Лайфхаки (Маленькие хитрости) А так можно было?!

Сообщение CTAPuK »

Phazz писал(а): 05 фев 2023, 10:10 Это все прекрасно, пока одна такая функция. Или не добавят другой блок с таким же лайфаком)
Как раз на это я и нарвался, когда задавал вопрос: Новый редактор для создания пользовательских блоков.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2405
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Лайфхаки (Маленькие хитрости) А так можно было?!

Сообщение Dryundel »

CTAPuK писал(а): 05 фев 2023, 10:41 Как раз на это я и нарвался, когда задавал вопрос:
Посмотреть бы.
Примерчик в студию, будьте добры.
CTAPuK
Рядовой
Сообщения: 70
Зарегистрирован: 06 дек 2020, 20:41
Имя: Михаил
Благодарил (а): 1 раз

Лайфхаки (Маленькие хитрости) А так можно было?!

Сообщение CTAPuK »

Dryundel писал(а): 05 фев 2023, 11:30 Посмотреть бы.
Примерчик в студию, будьте добры.
К сожалению привести пример уже не могу, так как переписал свой ПБ с учётом этого лайфхака, а старые версии ПБ уже удалил за ненадобностью.
Но смысл донес [ref=#808080]Phazz[/ref], когда в предыдущую функцию без "}", залетает последующая функция без "}". Таким образом последующая функция встраивается в тело предыдущей. Соответственно loop последующую функцию не видит и компилятор обижается.

Если необходимо, могу быстренько на коленке накидать эти ПБ, но с Вашим опытом работы в FLProg наверно этого не требуется.

Отправлено спустя 34 минуты 50 секунд:
P.S. Два ПБ с функциями: Func1 () и Func2 ()
[spoiler]
void setup()
{
}
void loop()
{
//Плата:1
Func1 ();
Func2 ();
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime)
{
return (currentTime>=(startTime + period));
}
else
{
return (currentTime >=(4294967295-startTime+period));
}
}
void Func1 ()
{
// Func1 ()
void Func2 ()
{
// Func2 ()
}
}


Компилятор:
'Func2' was not declared in this scope

[/spoiler]
Аватара пользователя
Dryundel
Полковник
Сообщения: 2405
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Лайфхаки (Маленькие хитрости) А так можно было?!

Сообщение Dryundel »

CTAPuK писал(а): 05 фев 2023, 12:17 Если необходимо, могу быстренько на коленке накидать эти ПБ
А где блоки то?
И в чем идея? Что во что Вы пытались встраивать? Для чего? Какие задачи стоят?
На сколько я помню Вы и пытались функцию в функцию запихать. Я Вам сказал, что так нельзя, а можно лишь вызывать одну из другой.
CTAPuK
Рядовой
Сообщения: 70
Зарегистрирован: 06 дек 2020, 20:41
Имя: Михаил
Благодарил (а): 1 раз

Лайфхаки (Маленькие хитрости) А так можно было?!

Сообщение CTAPuK »

Dryundel писал(а): 05 фев 2023, 14:13 И в чем идея? Что во что Вы пытались встраивать? Для чего? Какие задачи стоят?
Вся эта масса частных вопросов не имеет никакого отношения к обсуждаемой теме.
[ref=#808080]Phazz[/ref], написал, что фокус с открытой фигурной скобкой в ПБ работает в том случае, если в скетче используется только один такой ПБ. Если их используется два и больше, то фокус не прокатывает, так как получается матрёшка: функция в функции, в функции, в функции... И я согласен с этим утверждением. Это не идея и не задача. Это уточнение для тех, кто захочет воспользоваться этим лайфхаком. В частности я воспользовался ПБ от [ref]artemka19[/ref], при этом у меня в скетче уже был свой ПБ с открытой скобкой. В результате поимел головняк, пока разбирался с кодом на 30-ти страницах, почему IDE не видит явно описанную функцию.

Но если у Вас есть иной опыт использования несколько разных "ПБ с открытой скобкой", с удовольствием у Вас поучусь.
Dryundel писал(а): 05 фев 2023, 14:13 На сколько я помню Вы и пытались функцию в функцию запихать. Я Вам сказал, что так нельзя, а можно лишь вызывать одну из другой.
Вы не совсем верно помните. "Запихать" функцию в функцию нет никаких проблем. Я спрашивал о том, был ли у кого опыт вставки кода из "функции каждого экземпляра" в "функцию общего блока". Но я эту проблему решил, правда накладными расходами в виде избыточного кода, так как "ПБ без скобки" в скетче уже был от другого разработчика.

Ниже прикреплён пример с тремя такими блоками. Пример дан в качестве иллюстрации для подтверждения моих слов.

Допускаю, что у меня слишком мало опыта в написании ПБ. Приведите свой рабочий пример, где используется два и больше "ПБ без } в функции".
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

Вернуться в «Обучающие примеры работы в FLProg»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя