Проверить существование в ресурсе, удаление по значению

Запросы функционала
  • @BabloUser Нет, создаёшь ресурс из файла
    0_1529774904971_на форум 3.png
    А затем в "выполнить код" указываешь имя этого ресурса

  • @fox да, все разобрался, то что и нужно было, спасибо ребята.
    я по началу создавал ресурс и в него список грузил ) не понял что можно ссылку на ресурс

  • @fox

    var lines = RMap("lines")
    var index = lines.indexOf("account1")
    if(index >= 0)
    log("Строка существует")
    else
    log("Строка не существует")
    

    сделал тест, список с 10 строками отработал нормально Строка существует
    загрузил список 300 мб, 3 ляма строк, пишет Строка не существует

  • @BabloUser indexOf() чувствителен к регистру. Плюс ограничение вроде на ресурсы было в 10 000 строк. Проявлялось при использовании базы, думаю здесь тоже проявилось.

  • @fox не это точно не регистр все строки с маленьких букв, скорое всего ограничение
    ограничение я так понимаю обходить увеличением индекса в цикле
    нужно придумать как после 10 к в глубину уходить
    UPD
    нет не 10 к список 400 к строк нормально сработал
    можно в принципе на этом костыль замутить
    нужно теперь через цикл второй раз запустить этот код но спуститься от 400 к строки чтобы он шерстил, есть мысли как можно реализовать?

    в цикле погонять по 400 к за один проход
    блек листы огромные очень по 10 +к гигов эта фича нужна как воздух
    в принцепе можно порезать листы по строкам и их в цикле теребить, но может есть решение покрасивее...

  • @BabloUser Забудь ты нафиг эти костыли, закидывай в базу. Весить будет меньше и работать будет быстрее. Как ни как базы для этого и придумывали.

  • @support said in Проверить существование в ресурсе, удаление по значению:

    @fox Исправил. Постараюсь побыстрее добавить новое апи в интерфейс и сделать описание всех действий из модуля "Ресурсы"

    Версия BAS 21.0.1, работают все методы, кроме set(index, value). Ресурс в BAS'e меняет значение, но файл остаётся неизменным.

  • @fox said in Проверить существование в ресурсе, удаление по значению:

    @support said in Проверить существование в ресурсе, удаление по значению:

    @fox Исправил. Постараюсь побыстрее добавить новое апи в интерфейс и сделать описание всех действий из модуля "Ресурсы"

    Версия BAS 21.0.1, работают все методы, кроме set(index, value). Ресурс в BAS'e меняет значение, но файл остаётся неизменным.

    Официальный ответ, на случай если кто то будет работать с методом set(index, value)

    Метод sync работает только с добавлением/удалением строк.
    Используйте действие "Ресурс В Список" и "Записать Список В Файл" вместо test.sync
    

    Я проверил, действительно, изменённый методом set(index, value) ресурс помещается в список с изменениями и этот список можно записать в файл. Немного костыльно как по мне, но работает.

  • Как проверить существуют ли данные в ресурсе или нет? (Ресурс Строка).
    Задача: Есть ресурс СТРОКА, если данные существуют, то true, если данных нет (не заполнено строка), то false.

    По форуму искал, но дельного не нашел.

  • @kgera
    if {{a}}==''

  • @kgera said in Проверить существование в ресурсе, удаление по значению:

    Как проверить существуют ли данные в ресурсе или нет? (Ресурс Строка).
    Задача: Есть ресурс СТРОКА, если данные существуют, то true, если данных нет (не заполнено строка), то false.

    По форуму искал, но дельного не нашел.

    Используйте метод indexOf(value) указанный в api выше

    RMap("ИМЯ РЕСУРСА").indexOf("значение") > -1
    
  • @support said in Проверить существование в ресурсе, удаление по значению:

    //Изменяет элемент ресурса с заданным индексом.

    Добрый день, АПИ корректно работает в многотопоке, проблем в изменением отдельных строк быть не должно?

  • @support said in Проверить существование в ресурсе, удаление по значению:

    //Получить несколько разных случайных элемента из ресурса. Работает очень быстро.
    random(size)

    Работает корректно, но что то мне подсказывает, что вы собираетесь все изменения наблюдать в файле, это сделать не получится:

    Официальный ответ, на случай если кто то будет работать с методом set(index, value)

    Метод sync работает только с добавлением/удалением строк.
    Используйте действие "Ресурс В Список" и "Записать Список В Файл" вместо test.sync
    

    Я проверил, действительно, изменённый методом set(index, value) ресурс помещается в список с изменениями и этот список можно записать в файл. Немного костыльно как по мне, но работает.

  • @Fox нее) как раз буду именно в ресурсе работать. Он у меня наоборот будет заново пересоздаваться в OnApplicationStart.

  • @saanneekk said in Проверить существование в ресурсе, удаление по значению:

    @Fox нее) как раз буду именно в ресурсе работать. Он у меня наоборот будет заново пересоздаваться в OnApplicationStart.

    Ааа, это вместо объекта в глобальной переменной то? )

  • @Fox да, у меня должна была быть глобальная переменная под каждый поток, а теперь будет строка в ресурсе.
    Пока вроде все логически сходится, но еще посмотрим)

  • Здравствуйте. Подскажите, пожалуйста. Есть ресурс, в котором идут строки следующего вида:

    123:en
    124:en
    153:de
    154:en и так далее.

    Нужно получить индекс строки, по части элемента, чтобы ее установить в переменную. Поиск осуществляется по ID. indexOf работает только по полному совпадению. Как можно реализовать задуманное?

    Вот исходный код:

    var a = RMap("BLACKLIST_1");
    var index = a.indexOf([[USER_ID]])
    [[USER]] = a.at(index)
    

    USER_ID - часть строки с ID
    BLACKLIST_1 - ресурс с ID:ISO (en,de)
    USER - переменная куда нужно установить строку по индексу

  • @azaza777 said in Проверить существование в ресурсе, удаление по значению:

    Есть возможность реализовать, так как задумал?

    Через ресурс нет. Либо циклом обходить

  • появился такой вопрос по работе с ресурсами через апи + выполнить код

    ищу индекс строки так

    [[INDEX_I]] = RMap("Lock").indexOf([[USERNAME]]);
    

    в режиме записи все отлично рабоает, но в режиме запуска поток останавливается на этом месте. Как это исправить?

  • @shtorm said in Проверить существование в ресурсе, удаление по значению:

    появился такой вопрос по работе с ресурсами через апи + выполнить код

    ищу индекс строки так

    [[INDEX_I]] = Map("Lock").indexOf([[USERNAME]]);
    

    в режиме записи все отлично рабоает, но в режиме запуска поток останавливается на этом месте. Как это исправить?

    Приведите код полностью или прикрепите тестовый проект