Проблема получение количества элементов в ресурсе



  • Прикладываю тестовый скрипт. 0_1526631943815_test.xml

    Сегодня столкнулся с тем что когда в цикле проверяешь количество элементов в ресурсе и при этом на каждой итерации элемент удаляется после использования. То первые 2 итерации показывают одинаковое количество.

    В примере используется RMap, но с стандартным экшеном такая же ситуация.



  • @Denis_krsk Перезагружай ресурс.



  • @FastSpace Тестовый скрипт запускал? Я не удаляю его вручную, он сам удаляется после использования. И перезагрузить ресурс, загружает его заново из файла - это тут вообще не причем.



  • @Denis_krsk Да, странное поведение, сперва подумал, что виноват for, писал про [[CYCLE_INDEX]] ранее. Но убрав цикл совсем:
    0_1526729582544_на форум 6.png
    наблюдаю точно такую же картину

    [16:16:09] Поток №1 : Количество 3
    [16:16:09] Поток №1 : 1
    [16:16:09] Поток №1 : Количество 3
    [16:16:09] Поток №1 : 2
    [16:16:09] Поток №1 : Количество 2
    [16:16:09] Поток №1 : 3
    [16:16:09] Поток №1 : Количество 1
    [16:16:09] Поток №1 : Все данные были обработаны для test //вылет скрипта
    [16:16:15] Поток №1 : Количество 0 //в ручную выполнил команду
    

    Вот тестовый скрипт без цилка.



  • @Fox Оказывается все еще хуже )



  • @Denis_krsk Хуже, смотри, решил посмотреть с обычным массивом как обстоят дела..

    length - Длина массива: число, на единицу превосходящее максимальный индекс массива.
    Создал я список с тремя элементами, [[NEW_LIST]].length выдаёт 3

    Создал цикл от 0 до [[NEW_LIST]].length, цикл должен выполнить действие 4 раза, от 0 до 3. Но проходит только !две! итерации.
    Изменил цикл, сделал от 1 до [[NEW_LIST]].length, цикл должен был пройти 3 раза, от 1 до 3, но он опять проходит только !две! итерации.

    При том, что если цифрами указать от 1 до 3, то пройдёт 3 итерации.

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



  • При том, что если перед циклом определяешь [[NEW_LIST]].length в переменную, то всё работает как надо.

    Вот второй пример



  • @Fox C массивом так и должно быть. Ты же на каждой итерации удаляешь элемент. Поэтому число итерций уменьшается.



  • Тоесть вот это значение [[NEW_LIST]].length на каждой итерации будет уменьшаться. Это частая ошибка элементы массива в цикле удаляют.



  • @Denis_krsk А я думал, что определяется for при начале цикла, а не при каждой итерации.

    У тебя же такая же выходит ошибка, удаляешь из массива (объекта).

    Заметил, что если использовать лог перед проверкой, срабатывает правильно:
    0_1526734399294_на форум 7.png

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



  • @Fox У меня не такая. Я получается вывожу количество, потом беру элемент потом опять вывожу количество и на первых двух этерациях получается одинаковый результат, а дальше идет нормально



  • Более того ты же сам провел эксперимент вообще без цикла!



  • У меня не такая.

    @Denis_krsk Вот твой скрипт с 10 элементами. Доходит только до 6.

    Я получается вывожу количество, потом беру элемент потом опять вывожу количество и на первых двух этерациях получается одинаковый результат

    Вот такой вариант работает нормально
    alt text

    Вот скрипт
    Но поведение всё равно странное..



  • @Fox Да это да. Но суть проблемы которую я изложил была именно в неправильном количестве.



  • @Fox Кстати твой вариант с костылем оканчивается ошибкой вот скрипт твой только вместо [[NEW_LIST]].length цифры 0_1526737103463_1526736087699-315-test.xml



  • @Denis_krsk

    суть проблемы которую я изложил была именно в неправильном количестве.

    Да, и она решается если ещё раз обратится к ресурсу:
    0_1526737029255_на форум 8.png

    [18:35:26] Поток №1 : Количество 10
    [18:35:28] Поток №1 : 1
    [18:35:29] Поток №1 : Количество 9
    [18:35:30] Поток №1 : 2
    [18:35:31] Поток №1 : Количество 8
    [18:35:32] Поток №1 : 3
    

Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.