Как сейчас устроено ветвление через if-else?



  • Столкнулся с проблемой в ветвлении скрипта. Версия БАС 22.9
    Конкретно - скрипт сначала идет по ветке if, затем по ветке else (после того как отработали вложенные внутрь них блоки if/else)
    Искал на форуме похожие ошибки - встречаются.

    Логику проверил - в ней ошибок быть не должно. Есть предположение, что при многократном использовании вложенных if/else сбивается учет в них. В простых ветвлениях такой ошибки никогда не возникало.

    Прежде чем начать разбираться, хотел бы узнать как БАС запоминает условия для ветвлений. И не может ли быть такого, что повторно используется одна и та же "ячейка" памяти, что приводит к искажению в логике?



  • понимаю о чем ты. примерную схему лага составил.

    IF1 = true
    IF2 = false
    ELSE2 - верно выполняется этот блок
    ELSE1 - потом перескакивает сюда, чего не должно быть

    наверно вложения не предусмотрены.



  • @oleg4ever said in Как сейчас устроено ветвление через if-else?:

    понимаю о чем ты. примерную схему лага составил.

    IF1 = true
    IF2 = false
    ELSE2 - верно выполняется этот блок
    ELSE1 - потом перескакивает сюда, чего не должно быть

    наверно вложения не предусмотрены.

    Можете приложить тестовый проект?



  • @IvanM @oleg4ever
    Нормально прикладывайте проект. Нифига ж не понятно...
    test.xml



  • Нормально прикладывайте проект

    Я понимаю. Но не выкладывать же проект на 3К кубиков.
    Там по всему скрипту эти ветвления - где конкретно сбой не понятно.
    Потому и запросил сначала заметками других поделиться.

    IF1 = true
    IF2 = false
    ELSE2 - верно выполняется этот блок
    ELSE1 - потом перескакивает сюда, чего не должно быть

    test.xml

    О, спасибо за модель! То что надо, протестирую!



  • @IvanM
    Метки наверно используете. Или функции с метками.
    Вот путаница и происходит.



  • @000

    Метки наверно используете

    Как раз метки как суррогат пытаюсь свести к минимуму.
    Меж функциями переход по меткам вообще считаю какой-бякой) (даже не проверял как оно работает)
    Меток не было вообще в изначальной версии.

    Теперь внедряю и ошибок становится меньше.
    Стараюсь сделать "одноэтажный алгоритм" с исопльзованием if без else с переносом по меткам.

    Ну и вроде когда никак без вложенного ветвления, то помогает обращение к функции. Но пока не 100% инфа.



  • @IvanM said in Как сейчас устроено ветвление через if-else?:

    @000

    Метки наверно используете

    Как раз метки как суррогат пытаюсь свести к минимуму.
    Меж функциями переход по меткам вообще считаю какой-бякой) (даже не проверял как оно работает)
    Меток не было вообще в изначальной версии.

    Теперь внедряю и ошибок становится меньше.
    Стараюсь сделать "одноэтажный алгоритм" с исопльзованием if без else с переносом по меткам.

    Ну и вроде когда никак без вложенного ветвления, то помогает обращение к функции. Но пока не 100% инфа.

    Какое то гадание на кофейной гуще, опишите ошибку более подробно, приложите наглядный тестовый скрипт и если это баг мы это исправим



  • @Fox said in Как сейчас устроено ветвление через if-else?:

    приложите наглядный тестовый скрипт

    Да. Постараюсь как можно скорее.

    Пока не получилось повторить ошибку искусственно((

    Смотрю что делал в исходном скрипте. Возможно причина в изменении значении переменных (по которым определяются условия) внутри самих веток if/else.

    Когда что-либо обнаружу - прикреплю пример.
    Довольно длинный алгоритм, много что происходит, трудно понять в чем может быть загвоздка.



  • @IvanM Бывают глюки, когда копируешь кубики с метками. Также замечал, что бывает и при копировании кубиков с циклами.



  • @smeckoi77 said in Как сейчас устроено ветвление через if-else?:

    @IvanM Бывают глюки, когда копируешь кубики с метками. Также замечал, что бывает и при копировании кубиков с циклами.

    Можете описать ошибку более подробно? Как я могу повторить эту ошибку?



  • @Fox said in Как сейчас устроено ветвление через if-else?:

    @smeckoi77 said in Как сейчас устроено ветвление через if-else?:

    @IvanM Бывают глюки, когда копируешь кубики с метками. Также замечал, что бывает и при копировании кубиков с циклами.

    Можете описать ошибку более подробно? Как я могу повторить эту ошибку?

    Создай в одном проекте метки и перекинь их другой. У меня был такой баг, пришлось заново метки применять.



  • @FastSpace said in Как сейчас устроено ветвление через if-else?:

    @Fox said in Как сейчас устроено ветвление через if-else?:

    @smeckoi77 said in Как сейчас устроено ветвление через if-else?:

    @IvanM Бывают глюки, когда копируешь кубики с метками. Также замечал, что бывает и при копировании кубиков с циклами.

    Можете описать ошибку более подробно? Как я могу повторить эту ошибку?

    Создай в одном проекте метки и перекинь их другой. У меня был такой баг, пришлось заново метки применять.

    Простое копирование действий с метками сработало корректно, может названия меток были особыми?

    support507.gif



  • @FastSpace проекты/проект был крупного размера?



  • @Fox said in Как сейчас устроено ветвление через if-else?:

    Простое копирование действий с метками сработало корректно, может названия меток были особыми?

    Другое.

    В общем сегодня фиксанул у себя в проекте такой баг:

    1)Вызов функции 1 (Создать профиль).

    2)Внутри функции 1 был вызов функции 2 (Получить отпечаток с перфект канвас)

    3)Внутри функции 2 были метки и было условие if-else, внутри этого else был еще один if-else и когда шло по второй ветке else и возвращалась меткой, то функция 2 просто зависала после успешной ее обработки (был получен отпечаток с канвас) и дальше ничего не происходило (1 из 5000 случаев где-то). Убрал этот второй if из первой ветки else и перенес его в функцию 1 и зависать перестало.

    Вывод для себя: Не делать лишних if в ветке else когда еще вызвана функция с метками.



  • @tet-vivi said in Как сейчас устроено ветвление через if-else?:

    @FastSpace проекты/проект был крупного размера?

    Да, в крупных было когда переносил код, метки название баговалось на кразозяру и вопросы ?????????? приходилось пересоздавать метки.



  • @FastSpace said in Как сейчас устроено ветвление через if-else?:

    @tet-vivi said in Как сейчас устроено ветвление через if-else?:

    @FastSpace проекты/проект был крупного размера?

    Да, в крупных было когда переносил код, метки название баговалось на кразозяру и вопросы ?????????? приходилось пересоздавать метки.

    названия меток в кириллице были?



  • @tet-vivi угу



  • @FastSpace Вот никогда бы не подумал, что ты Кирилицей что то пишешь как Новички :)))
    Мне как то дельный Совет Fox и UserTrue дали, стараться вообще Кириллицу не использовать ( у меня Ресурсы полностью на Русском были и был вот из за них даже глюк ) а тем более уж внутри Скрипта :)
    И перед Функциями или Меткой, ставлю просто не большой Сон и не сглазить бы :)))
    Но проблемы ушли :)
    ![alt text](f69af91e-e5a6-4bcc-bf14-b187776f5c12-image.png image url)



  • @super84 еще можно добавить использование пробелов тоже чревато может быть.(у кого то этим проблемы вылазили)


Log in to reply
 

  • 22
  • 1
  • 2
  • 21
  • 2
  • 5
  • 2
  • 4