AIMP Forum

Разное => Предложения (архив) / Suggestions (archive) => Архив / Archive => Реализовано в AIMP v5.0X / Implemented in AIMP v5.0X => Тема начата: Black_AVP от Марта 03, 2017, 09:23:02

Название: [Запланировано] Глобальные переменные в проекте
Отправлено: Black_AVP от Марта 03, 2017, 09:23:02
Вопрос уже поднимался, но было предложено для этих целей использовать счётчики. В скриптах это возможно, но обращение к ним неудобно, также неудобно хранить в них вещественные значения.
Часто возникают такие ситуации, когда в проекте нужно менять какое-либо число, как правило, это константы, которые используются сразу в нескольких местах: в скриптах, во внешних связях, во внутренних выражениях провайдеров. Это всё нужно держать в голове и ошибку трудно обнаружить.
Использование переменных быыло бы полезно и в таблице свойств элементов, где задаются числовые значения, а может, даже, и строковые.
Чтоб не усложнять интерфейс редактора, можно было бы просто добавить раздел "Variables" в диалог "Custom Providers".
Название: Re: [Предложение] Глобальные переменные в проекте
Отправлено: Artem от Марта 03, 2017, 16:23:07
Как ты себе представляешь взаимодействие с этими переменными? Должны ли их значения сохраняться в конфиг?
Название: Re: [Предложение] Глобальные переменные в проекте
Отправлено: Black_AVP от Марта 03, 2017, 16:55:29
Как ты себе представляешь взаимодействие с этими переменными?
Переменные, ес-но, должны быть доступны из скриптов (read/write), в принципе, наверное, и биндинг с ними возможен, если они будут выступать в роли провайдеров.
Внутренние выражения могут иметь вид: (Value < Var1) AND (Value > Var2). Аналогично и для внешних связей биндинга.
Можно конкретнее, что ты имеешь ввиду под "взаимодействием"?

Должны ли их значения сохраняться в конфиг?
Разумеется, как сохраняются и состояния счётчиков и т. п., иначе, какой смысл.

Понадобится, конечно, ещё один диалог, где пользователь задаст имя переменной, возможно, ещё и тип. Трёх типов будет достаточно: вещественного, целочисленного и строкового.
Название: Re: [Предложение] Глобальные переменные в проекте
Отправлено: Artem от Марта 04, 2017, 15:32:19
Проблема вот какого характера - отслеживание изменения переменной. Движок должен знать кто и где ссылается на эту переменную, отслеживать зависимости между скриптами и биндинг линками, и при изменении значения переменной перезапускать только определенный скрипты, и в определенном порядке, чтобы не вызвать нарушение синхроинности.
Название: Re: [Предложение] Глобальные переменные в проекте
Отправлено: Black_AVP от Марта 04, 2017, 16:04:34
Проблема вот какого характера - отслеживание изменения переменной. Движок должен знать кто и где ссылается на эту переменную, отслеживать зависимости между скриптами и биндинг линками, и при изменении значения переменной перезапускать только определенный скрипты, и в определенном порядке, чтобы не вызвать нарушение синхроинности.
Ну, а как сейчас с теми же счётчиками происходит? Мы же тоже можем подключить его, к примеру, к коммутатору и использовать его значение во внутреннем выражении коммутатора.
А может, и вообще не отслеживать? Как в обычной программе: изменение переменной не влечёт за собой никакой реакции, если, конечно, это не свойсво объекта и к нему не привязана какая-либо процедура. Скрипт, когда он сработает, считает новое значение этой переменной, аналогично и биндинг, когда он будет задействован.
Название: Re: [Предложение] Глобальные переменные в проекте
Отправлено: Artem от Марта 15, 2017, 15:33:26
Я уверен, что после введения сразу захочется отслеживать... Сделать доступ к конфигу скина довольно просто, а вот сделать рассылку нотификаций об изменениях... не особо.
Для каких сценариев понадобилось сохранять такие параметры?
Название: Re: [Предложение] Глобальные переменные в проекте
Отправлено: Black_AVP от Марта 15, 2017, 16:51:25
Ну, к примеру, такой простенький проектик. Здесь один и тот же параметр (или производный от него) используется и во внутр. выражении коммутатора и в двух разных скриптах:
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=55869.0;attach=49603)

Плюс ко всему это ещё и модуль одного из счётчиков. И это ещё не самый тяжёлый случай.
Пусь это были бы как константы с возможностью их изменения.
Название: Re: [Предложение] Глобальные переменные в проекте
Отправлено: Artem от Марта 15, 2017, 17:13:05
Есть проблема - добавить глобальную переменную в выражение биндинг-линка очень сложно.
Название: Re: [Предложение] Глобальные переменные в проекте
Отправлено: Black_AVP от Марта 15, 2017, 17:50:50
Есть проблема - добавить глобальную переменную в выражение биндинг-линка очень сложно.
А если хотя бы ограничится введением этого только в редактор, на уровне проектирования, а скин собирать уже с конкретными числовыми значениями - это не облегчит тебе жизнь?
Название: Re: Глобальные переменные в проекте
Отправлено: Artem от Марта 01, 2021, 14:59:10
Если проблема еще актуальная - я попробую реализовать поддержку в 5-ой версии.
Название: Re: Глобальные переменные в проекте
Отправлено: Black_AVP от Марта 02, 2021, 20:18:25
Если проблема еще актуальная - я попробую реализовать поддержку в 5-ой версии.
ИМХО, было бы намного удобнее, чем хранить данные в счётчиках и ини-файле, и скрипт лаконичнее будет выглядеть.
Название: Re: Глобальные переменные в проекте
Отправлено: Artem от Марта 04, 2021, 12:56:12
хранить данные в счётчиках и ини-файле

Эти данные будут меняться в ходе работы скина?
Название: Re: Глобальные переменные в проекте
Отправлено: Black_AVP от Марта 04, 2021, 13:03:25
Эти данные будут меняться в ходе работы скина?
Если это сильно усложнит задачу, то пусть хотя бы константами будут.
Название: Re: Глобальные переменные в проекте
Отправлено: Artem от Марта 04, 2021, 13:36:36
Само изменение - нет, не сложно. Другое дело, что при изменении нужно все пересчитывать, а это не всегда можно делать.
Название: Re: Глобальные переменные в проекте
Отправлено: Black_AVP от Марта 04, 2021, 15:21:51
... Другое дело, что при изменении нужно все пересчитывать, а это не всегда можно делать.
Ну, я и имел в виду сложности с твоей стороны.
Название: Re: Глобальные переменные в проекте
Отправлено: Artem от Марта 04, 2021, 16:36:22
Ну, я и имел в виду сложности с твоей стороны.

Я имел в виду, что изменение константы не сможет автоматически запустить пересчет всех выражений и скриптов. Однако, при следующем их выполнении значения подхватятся новые. Такой вариант подойдет? Как сейчас происходят пересчеты при изменениях "констант"?
Название: Re: Глобальные переменные в проекте
Отправлено: Black_AVP от Марта 04, 2021, 21:16:39
... Однако, при следующем их выполнении значения подхватятся новые. Такой вариант подойдет?
Вполне подойдёт.