Баг связанный с функцией ELSE



  • Происходит это уже раз 5-тый в этой обнове. Всё работает нормально, скрипт выполняется сотни раз в том же месте и в определенный момент появляется такая ошибка
    Приходится заново делать весь блок в новом проекте но ошибка возвращается. Как это устранить, или когда это устранят?

    [14:29:47] Поток №1 : ReferenceError: Can't find variable: IF_ELSE_EXPRESSION_877849 во время выполнения действия 52199140


  • @warenuk приложи проект или часть проекта, где "баг" появляется



  •       section_start("", 534245918)!
          /*Dat:eyJzIjoiZXhpc3QiLCJ2IjoxLCJmIjpbXSwidXciOiIwIiwidXQiOiIwIiwidXRvIjoiMCIsInVtIjoiMCIsImQiOlt7ImlkIjoiU2F2ZSIsInR5cGUiOiJ2YXIiLCJkYXRhIjoiSVNfRVhJU1RTIn0seyJpZCI6IkNoZWNrIiwidHlwZSI6ImNoZWNrIiwiZGF0YSI6dHJ1ZX1dLCJwIjp7ImlzX2ltYWdlIjpmYWxzZSwiY3NzIjoiID5DU1M+IDpudGgtY2hpbGQoMSkgPiBsaSIsInZlcnNpb24iOiIxLjAiLCJjc3MxIjoiID5DU1M+IDpudGgtY2hpbGQoMSkgPiBsaSIsImNzczIiOiIiLCJjc3MzIjoiID5DU1M+IC5hY3RpdmUgPiAubmF2LWl0ZW0iLCJjdXJyZW50IjoiY3NzIiwibWF0Y2giOiI+TUFUQ0g+PGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0tcmVnaXN0ZXJcIiB0IiwieHBhdGgiOiIgPlhQQVRIPiAvaHRtbFtAY2xhc3M9XCJuby1qc1wiXS9ib2R5WzFdL2RpdltAY2xhc3M9XCJ3cmFwcGVyQWxsXCJdL3NpZGViYXItZGlyZWN0aXZlW0BjbGFzcz1cIlwiXS9hc2lkZVtAY2xhc3M9XCJcIl0vbmF2WzFdL3VsWzFdL2FbQGNsYXNzPVwiYWN0aXZlXCJdL2xpW0BjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtLXJlZ2lzdGVyXCJdIiwiYXQiOiIxMzksIDE1OSIsIndlIjpmYWxzZSwiZmEiOmZhbHNlfX0=*/
          /*Browser*/
          ;_SELECTOR=" \u003eCSS\u003e :nth-child(1) \u003e li";
          get_element_selector(_SELECTOR, false).nowait().exist()!
          VAR_IS_EXISTS = _result() == 1
          _if(VAR_IS_EXISTS, function(){
          get_element_selector(_SELECTOR, false).nowait().style("display")!
          STYLE_DISPLAY = _result()
          get_element_selector(_SELECTOR, false).nowait().style("visibility")!
          STYLE2_DISPLAY = _result()
          get_element_selector(_SELECTOR, false).nowait().script("self.getBoundingClientRect().height")!
          STYLE_HEIGHT = _result()
          get_element_selector(_SELECTOR, false).nowait().script("self.getBoundingClientRect().width")!
          STYLE_WIDTH = _result()
          VAR_IS_EXISTS = STYLE_DISPLAY != "none" && STYLE2_DISPLAY != "hidden" && STYLE_HEIGHT != "0"  && STYLE_WIDTH != "0"
          })!
          section_end()!
    
          section_start("", 174208350)!
          /*Dat:eyJzIjoiaWYiLCJ2IjoxLCJmIjpbXSwidXciOiIwIiwidXQiOiIwIiwidXRvIjoiMCIsInVtIjoiMCIsImQiOlt7ImlkIjoiSWZFeHByZXNzaW9uIiwidHlwZSI6ImNvbnN0ciIsImRhdGEiOiJbW0lTX0VYSVNUU11dIiwiY2xhc3MiOiJleHByZXNzaW9uIn0seyJpZCI6IklmRWxzZSIsInR5cGUiOiJjaGVjayIsImRhdGEiOmZhbHNlfV19*/
          _if(VAR_IS_EXISTS,function(){
          section_insert()
             section_start("", 809334011)!
             /*Dat:eyJzIjoidGV4dCIsInYiOjEsImYiOltdLCJ1dyI6IjAiLCJ1dCI6IjAiLCJ1dG8iOiIwIiwidW0iOiIwIiwiZCI6W3siaWQiOiJTYXZlVGV4dCIsInR5cGUiOiJ2YXIiLCJkYXRhIjoiU0FWRURfVEVYVCJ9XSwicCI6eyJpc19pbWFnZSI6ZmFsc2UsImNzcyI6IiA+Q1NTPiA6bnRoLWNoaWxkKDEpID4gbGkiLCJ2ZXJzaW9uIjoiMS4wIiwiY3NzMSI6IiA+Q1NTPiA6bnRoLWNoaWxkKDEpID4gbGkiLCJjc3MyIjoiIiwiY3NzMyI6IiA+Q1NTPiAuYWN0aXZlID4gLm5hdi1pdGVtIiwiY3VycmVudCI6ImNzcyIsIm1hdGNoIjoiPk1BVENIPjxsaSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtLXJlZ2lzdGVyXCIgdCIsInhwYXRoIjoiID5YUEFUSD4gL2h0bWxbQGNsYXNzPVwibm8tanNcIl0vYm9keVsxXS9kaXZbQGNsYXNzPVwid3JhcHBlckFsbFwiXS9zaWRlYmFyLWRpcmVjdGl2ZVtAY2xhc3M9XCJcIl0vYXNpZGVbQGNsYXNzPVwiXCJdL25hdlsxXS91bFsxXS9hW0BjbGFzcz1cImFjdGl2ZVwiXS9saVtAY2xhc3M9XCJuYXYtaXRlbSBuYXYtaXRlbS1yZWdpc3RlclwiXSIsImF0IjoiMTUwLCAxNjgiLCJ3ZSI6dHJ1ZSwiZmEiOnRydWV9fQ==*/
             /*Browser*/
             _SELECTOR = " \u003eCSS\u003e :nth-child(1) \u003e li";
             wait_element(_SELECTOR)!
             get_element_selector(_SELECTOR, false).text()!
             VAR_SAVED_TEXT = _result()
             section_end()!
    
             section_start("", 217756122)!
             /*Dat:eyJzIjoiaWYiLCJ2IjoxLCJyb2xlIjoibWFzdGVyIiwic2xhdmUiOjUyMTk5MTQwLCJtYXN0ZXIiOjIxNzc1NjEyMiwiaWZfdmFyIjoiSUZfRUxTRV9FWFBSRVNTSU9OXzg3Nzg0OSIsImYiOltdLCJ1dyI6IjAiLCJ1dCI6IjAiLCJ1dG8iOiIwIiwidW0iOiIwIiwiZCI6W3siaWQiOiJJZkV4cHJlc3Npb24iLCJ0eXBlIjoiY29uc3RyIiwiZGF0YSI6IltbU0FWRURfVEVYVF1dID09IFwiR2V0IEZyZWUgQml0Y29pbnNcIiIsImNsYXNzIjoiZXhwcmVzc2lvbiJ9LHsiaWQiOiJJZkVsc2UiLCJ0eXBlIjoiY2hlY2siLCJkYXRhIjp0cnVlfV19*/
             IF_ELSE_EXPRESSION_877849 = VAR_SAVED_TEXT == "Get Free Bitcoins";
             _if(IF_ELSE_EXPRESSION_877849,function(){
             section_insert()
                section_start("", 641969489)!
                /*Dat:eyJzIjoiZXhlY3V0ZWZ1bmN0aW9uIiwidiI6MSwiZiI6W10sInV3IjoiMCIsInV0IjoiMCIsInV0byI6IjAiLCJ1bSI6IjAiLCJkIjpbeyJpZCI6IkZ1bmN0aW9uTmFtZSIsInR5cGUiOiJ0ZXh0IiwiZGF0YSI6IndhaXRlIn1dfQ==*/
                _call(waite,null)!
                section_end()!
    
             })!
             section_end()!
    
             section_start("\u007b\u0022n\u0022:\u0022Else\u0022\u007d", 52199140)!
             /*Dat:eyJzIjoiaWYiLCJ2IjoxLCJyb2xlIjoic2xhdmUiLCJzbGF2ZSI6NTIxOTkxNDAsIm1hc3RlciI6MjE3NzU2MTIyLCJpZl92YXIiOiJJRl9FTFNFX0VYUFJFU1NJT05fODc3ODQ5IiwiZiI6W10sInV3IjoiMCIsInV0IjoiMCIsInV0byI6IjAiLCJ1bSI6IjAiLCJkIjpbeyJpZCI6IklmRXhwcmVzc2lvbiIsInR5cGUiOiJjb25zdHIiLCJkYXRhIjoiW1tTQVZFRF9URVhUXV0gPT0gXCJHZXQgRnJlZSBCaXRjb2luc1wiIiwiY2xhc3MiOiJleHByZXNzaW9uIn0seyJpZCI6IklmRWxzZSIsInR5cGUiOiJjaGVjayIsImRhdGEiOnRydWV9XX0=*/
             _if(!IF_ELSE_EXPRESSION_877849,function(){
             section_insert()
                section_start("", 745043809)!
                /*Dat:eyJzIjoiZXhlY3V0ZWZ1bmN0aW9uIiwidiI6MSwiZiI6W10sInV3IjoiMCIsInV0IjoiMCIsInV0byI6IjAiLCJ1bSI6IjAiLCJkIjpbeyJpZCI6IkZ1bmN0aW9uTmFtZSIsInR5cGUiOiJ0ZXh0IiwiZGF0YSI6ImxvZ2luIn1dfQ==*/
                _call(login,null)!
                section_end()!
    
             })!
             delete IF_ELSE_EXPRESSION_877849;
             section_end()!
    
          })!
          section_end()!
    
       }
       section_end()!
    

    0_1541336866407_Безымянный.png



  • @warenuk Ничего необычно вроде нет. Единственное предположение, что у вас есть переход по метке в функцию login минуя начальное условие if



  • Если минуется начальное условие If то как может запрашиваться Else?



  • @warenuk Я уже написал, что такое возможно через метку. Тк в бас if else это две отдельные функции и поэтому такое возможно.


  • administrators

    @warenuk said in Баг связанный с функцией ELSE:

    Происходит это уже раз 5-тый в этой обнове. Всё работает нормально, скрипт выполняется сотни раз в том же месте и в определенный момент появляется такая ошибка

    Есть такая ошибка в рекурсии
    0_1541362419597_на форум 15.gif

    Стек вызова запоминает из какой функции вызывалась каждая другая функция, даже в случае рекурсии. По возвращении пытается завершить начатую функцию, возвращаясь в условие проходит else и удаляет переменную условия для else, возвращаясь в это же условие второй раз не может выполнить else, так как действие в предыдущий раз удалило переменную:

          section_start("", 899064356)!
          
          IF_ELSE_EXPRESSION_845013 = VAR_NEW_VARIABLE < 5;
          _if(IF_ELSE_EXPRESSION_845013,function(){
          section_insert()
             section_start("", 129017719)!
             
             _call(toster,null)!
             section_end()!
    
          })!
          section_end()!
    
          section_start("\u007b\u0022n\u0022:\u0022Else\u0022\u007d", 83727063)!
          
          _if(!IF_ELSE_EXPRESSION_845013,function(){
          section_insert()
             section_start("", 972370824)!
             
             _call(ne_toster,null)!
             section_end()!
    
          })!
          delete IF_ELSE_EXPRESSION_845013; //после прохода else удаляется переменная
          section_end()!
    

    Вот тестовый скрипт


    Если мы не будем удалять переменную else, то скрипт отработает все else равным количеству циклов рекурсии

          section_start("", 899064356)!
          
          IF_ELSE_EXPRESSION_845013 = VAR_NEW_VARIABLE < 5;
          _if(IF_ELSE_EXPRESSION_845013,function(){
          section_insert()
             section_start("", 129017719)!
             
             _call(toster,null)!
             section_end()!
    
          })!
          section_end()!
    
          section_start("\u007b\u0022n\u0022:\u0022Else\u0022\u007d", 83727063)!
          
          _if(!IF_ELSE_EXPRESSION_845013,function(){
          section_insert()
             section_start("", 972370824)!
             
             _call(ne_toster,null)!
             section_end()!
    
          })!
          //delete IF_ELSE_EXPRESSION_845013;  заэкранировали удаление переменной
          section_end()!
    

    0_1541363706033_на форум 16.gif
    Вот тестовый скрипт


    Лечится простым использованием второго условия, противоположному первому, вместо else.
    0_1541364077301_bacd24bb-5794-471d-8a8c-19c0cc0db8d9-изображение.png
    Вот тестовый скрипт


    Ошибка старая, но на всякий случай продублировал @support



  • @fox said in Баг связанный с функцией ELSE:

    else,

    Благодарю за исчерпывающий ответ!



  • Возвращайся также меткой.


  • administrators

    @fox Да, согласен, постараюсь исправить к следующей.