AIMP Forum

AIMP for Android => Skin Editor, Skin Engine => Вопросы / Questions => Topic started by: Xaker_Two on September 12, 2023, 02:10:18

Title: [+] Нэйминг(ID) контролов
Post by: Xaker_Two on September 12, 2023, 02:10:18
Прошерстив справку не обнаружил вообще никакой инфы про запреты, условия или правила задания контролам своих ID, хотя есть обрабатываемая ошибка, в тексте которой сказано что они должны начинаться с нижнего подчеркивания.

Хорошо не велика беда, но блин почему:
 _underlay.bottom.dark является не валидным(причина в точках, но причина почему они тут запрещены)
 выбрасывается необработанная ошибка
 нижнее подчеркивание вначале не пресекает любые дальнейшие обработки ID

ПАЧАМУ?!!

p.s. завезите иконку ядерного взрыва для топиков, желательно 4К чтоб весь экран занимала
Title: Re: Нэйминг(ID) контролов
Post by: Artem on September 12, 2023, 08:16:01
Почитайте правила форума, пожалуйста. Мне кажется, вы немного забываетесь
Title: Re: Нэйминг(ID) контролов
Post by: Artem on September 12, 2023, 08:18:29
Точки запрещены для имен элементов (как в большинстве ЯП). В справке писать не стал, т.к. посчитал, что люди, кто лезет в выражения (мини-скрипты), что-нибудь да понимают в программировании, а оказывается... Точка используется для доступа к объектам. Знаю, что сейчас начнутся нападки в сторону стандартных элементов. Это легаси, и из выражений они недоступны.
Title: Re: [+] Нэйминг(ID) контролов
Post by: Xaker_Two on September 17, 2023, 19:21:38
спецом перед публикацией темы читал правила общие и правила этого раздела и, исходя из их версии от 12.09.2023, ничего не нарушил, а тон сообщения - да вроде не хамил, не грубил, прост немного пригорело с ошибки на пустом месте

... а оказывается точки используются не для доступа к объектам а к членам объекта(т.е. полям, свойствам, функциям и методам/процедурам).
точки запрещены в именах перемнных, но не в их значениях, которые и задаются через свойства id и name, а ограничения визуальных-редакторов(той же VS) связаны с тем что свойство Name и имя переменной контрола зачастую связаны или просто одно и тоже, но вручную свойство Name задается хоть как. У вас же в редакторе нет ничего что как-то могло быть связанно с переменными единственное место где id используется как переменная - выражения PlaceInfo, и там же есть лазейка для стандартных контролов в виде obj('id'), а залезая в xml все что я вижу это тоже свойство Name только в виде атрибута у объекта указанного типа. Да и вообще все эти ограничения важны только из-за синтаксиса по которому работает копмиллер/парсер, а run-time-у на них положить огромный такой болтец. В вашем же парсере есть лазейка для обхода ограничения. В любом случае все ограничения обычно выносятся в справку, даже самые банальные.

плохо знаете т.к. про базовые даже не собирался заикаться - они "спец объекты" обрабатываемые по особым правилам. А вот далее мне казалось что сигналом к такой особой обработке или её отсутствию целиком должно являться отсутствие или наличие нижнего подчеркивания, и, опятьже как мне казалось, наличие нижнего подчеркивания(аля экранирование) должно было пропускать абсолютно любую ахинею в id, включая точки, как есть без обработки. Но, оказывается, функционал для встройки применяется к пользовательским элементам всегда, да при том ещё и НЕ ОБРАБОТАННУЮ ошибку вываливает.

Отсюда и один вопрос в трех частях

И все "мне казалось" из-за вашего "посчитал/подумал" - справка на то и справка чтобы быть пред-последней инстанцией в любых вопросах, а без ясного ТЗ результат ХЗ