Проверить существование ресурса

Поддержка
  • День добрый. Стоит задача проверить ресурс на существование.
    Кубиков и api (https://community.bablosoft.com/post/27369) не нашел, поэтому надеюсь на помощь.
    Временным решением пользуюсь
    Временным решением пользуюсь - проверяю длину ресурса, если 0 - создаю новый ресурс и добавляю в него пустую строку.
    Хотелось бы обойтись без лишних данных в ресурсе.

  • @Sadzurami said in Проверить существование ресурса:

    День добрый. Стоит задача проверить ресурс на существование.
    Кубиков и api (https://community.bablosoft.com/post/27369) не нашел, поэтому надеюсь на помощь.
    Временным решением пользуюсь - проверяю длину ресурса, если 0 - создаю новый ресурс и добавляю в него пустую строку.
    Хотелось бы обойтись без лишних данных в ресурсе.

    Что именно вы хотите проверить то? Существует ресурс с таким именем или есть ли в каком то ресурсе данные?

  • @Fox существует ли ресурс с таким именем

  • @Sadzurami said in Проверить существование ресурса:

    @Fox существует ли ресурс с таким именем

    А можете описать ситуацию, когда это может понадобится?

  • @Fox для написания модулей, которые используют систему ресурсов для хранения данных

  • @Sadzurami said in Проверить существование ресурса:

    @Fox для написания модулей, которые используют систему ресурсов для хранения данных

    Это не ситуация, а концепт. Полагаю в модуле вы сами будете создавать локальные ресурсы, значит в этом же модуле можно организовать логику для получения названия созданного ресурса

  • @Fox название я задаю самостоятельно. Если при инициализации модуля ресурс постоянно создавать через RCreate() - данные стираются.
    Ресурс нужен для работы в многопотоке, соответственно каждый поток будет инициализировать модуль в начале жизни потока, тем самым пересоздавать имеющийся ресурс.

    Поэтому и интересует способ узнать был ли ресурс создан заранее, чтобы не использовать RCreate() для перезаписи информации о ресурсе

  • @Sadzurami said in Проверить существование ресурса:

    @Fox название я задаю самостоятельно. Если при инициализации модуля ресурс с заданным именем постоянно создавать через RCreate() - данные стираются.
    Ресурс нужен для работы в многопотоке, соответственно каждый поток будет инициализировать модуль в начале жизни потока, тем самым пересоздавать имеющийся ресурс.

    Поэтому и интересует способ узнать был ли ресурс создан заранее, чтобы не использовать RCreate()

    Такого функционала нет, но узнать существует ли ресурс можно несколькими способами. Например сразу после создания поместить в него какие либо данные и проверить их существование через

    RMap("res").at(0)
    или
    RMap("res").length()
    

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

  • @Fox благодарю за ответ. Вариант с глобальной переменной выглядит интересно.

  • @Sadzurami Рылся в исходниках и вспомнил про эту тему.

    Можно проверить вот так

    JSON.parse(ScriptWorker.PickResources())['res_name'] !== undefined
    
  • @UserTrue полезно
    спасибо