custom settings

Делитесь модулями
  • Название: CustomSettings
    Версия: 1.2
    Данные: https://mega.nz/file/hWR2HYBZ#Stqt4fII4zTuaXp6M1P47IPCQIta17Tq38SUAxbCc7A
    CustomSettings.zip
    Согласие на добавление модуля в BAS: Да.
    Описание: Модуль позволяет сохранять и читать определенные строковые, числовые и JSON-object переменные из любого потока и/или/в/из файла(озу) по желанию. Удобная замена глобальным переменным. Также есть аналог "ресурсов баса", построчное чтение больших текстовых файлов, (с фантомным удалением, (для потоков) по желанию.

    e0b5ca77-2167-4d31-85fd-9e73a005e251-image.png
    28ee2bb2-635a-439b-8ac2-216a3e230384-image.png
    63c00970-8c7d-4f80-9cd8-7bde5f5043e1-image.png
    f990241d-1505-45c1-8ea4-ffd0f4313d9b-image.png

    История версий:

  • @Int64 said in custom settings:

    Название: CustomSettings
    Версия: 1.0
    Данные: 6164a2e6-32ed-4df4-8bf4-e14af6cd1a96-CustomSettings.zip
    Согласие на добавление модуля в BAS: Да.
    Описание: Модуль позволяет сохранять и читать определенные настройки из любого потока и/или/в из файла(озу) по желанию. Удобная замена глобальным переменным.

    Я не совсем понял про замену глобальных переменных, вы же просто создаёте объект в глобальной переменной. Причём используете зачем то 3 глобальных переменных:

    • SETTINGS_MODULE_INITIALIZED
    • DEFAULT_SAVE_DIR
    • SETTINGS_OBJECT

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

    Также не лучшая идея использовать в модуле переменные BAS (в двойных квадратных скобках или с приставкой "VAR_"), их может случайно переопределить пользователь

  • @Fox производительность страдает? ;D p.s с глобальными переменными не удобно в басе работать. много путанницы.
    Переделывал мб, забыл удалить.
    Я имею ввиду я их использую, эти глобальные, но самому не надо вручную это делать, а 1 кубиком.
    p.s зато в потоках все быстро работает, можно из файла получать и сохранять. ну кому надо, тот возьмет. это халява!
    Подожду отзывов, мб исправлю что там.

  • @Int64 said in custom settings:

    @Fox производительность страдает? ;D p.s с глобальными переменными не удобно в басе работать. много путанницы.
    Переделывал мб, забыл удалить.
    Я имею ввиду я их использую, эти глобальные, но самому не надо вручную это делать, а 1 кубиком.
    p.s зато в потоках все быстро работает, можно из файла получать и сохранять. ну кому надо, тот возьмет. это халява!
    Подожду отзывов, мб исправлю что там.

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

    • SETTINGS_MODULE_INITIALIZED
    • DEFAULT_SAVE_DIR
    • SETTINGS_OBJECT

    Или локальные переменные с названиями:

    • OPTIONS_NAME
    • FROM_FILE
    • READ_FILE_DIRECTORY
    • SETTINGS_OBJECT
    • DEFAULT_SAVE_DIR
    • PROJECT_DIRECTORY
    • USER_SETTINGS_OBJECT
    • FILE_CONTENT

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

  • Cool module and appreciate the contribution but I neither understand whats wrong with current global var

  • @Int64 Обновил. Полная изоляция переменных от баса (длл).
    Обьекты (json) автоматически конвертируются в строку (при сохранении) и при чтении обратно в объект.

  • @Int64 Обновил модуль. Добавлено построчное чтение строк (с удалением для других потоков по желанию) из любых по размеру текстовых файлов.

    Фотки:

  • @Int64 исправил баг, перезалил)

  • дайте прошлую версию
    или обновите модуль tgbotserver на эту версию
    Интерфейс действия "CustomSettings_initializeSettings" отсутствует или поврежден.

  • @Fox said in custom settings:

    .... Или локальные переменные с названиями: ....

    @Fox said in custom settings:

    Локальные переменные BAS внутри модуля находятся в глобальной видимости потока,

    По хорошему, вероятно, BAS должен изолировать переменные модуля в своем отдельном пространстве имен для модуля и совсем запрещать глобальные переменные. Или эмулировать их поведение, когда внутри кода модуля все есть и работает с глобальными переменными, а наружу ничего не видно.

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