OberonCore
https://forum.oberoncore.ru/

DevSelectors
https://forum.oberoncore.ru/viewtopic.php?f=1&t=435
Страница 1 из 1

Автор:  Илья Ермаков [ Вторник, 17 Апрель, 2007 14:06 ]
Заголовок сообщения:  DevSelectors

На форуме Королевства Дельфи Trurl упомянул про такую штуку, как "селекторы", которые предназначены для управления версиями кода.
Они расположены в недокументированном модуле DevSelectors.
С чем их едят, непонятно :-)
Надеюсь, Trurl сейчас нам объяснит...

Автор:  Trurl [ Вторник, 17 Апрель, 2007 15:27 ]
Заголовок сообщения: 

Объясняю. :)
Добавляем в меню что-то вроде.
Код:
"Insert Left"   "*F5"   "DevSelectors.DepositLeft; StdCmds.PasteView"   "StdCmds.PasteViewGuard"
"Insert Middle"   "*F6"   "DevSelectors.DepositMiddle; StdCmds.PasteView"   "StdCmds.PasteViewGuard"
"Insert Right"   "*F7"   "DevSelectors.DepositRight; StdCmds.PasteView"   "StdCmds.PasteViewGuard"

Теперь можно вставлять в текст такие штучки, назовем их селекторами.
[имя|вариант1|вариант2|вариант3|... ]
Когда щелкаем на одном из вариантов, остальные прячутся, причем сразу во всех селекторах с тем же именем.
Удобно где-нибудь в начале модуля сделать комментарии вида
Код:
(* [feature|On|Off] *)

Тогда легко переключать варианты.
Кроме того компилятор понимает команды вида
Код:
DevCompiler.CompileThis MyModule(feature:On)

Автор:  Илья Ермаков [ Вторник, 17 Апрель, 2007 15:31 ]
Заголовок сообщения: 

Круть!

А мы тут колдыбаемся с фолдами :-)

Надо в следующем сервис-паке добавить пункты меню и документацию на модуль...

Автор:  Борис Рюмшин [ Вторник, 17 Апрель, 2007 15:52 ]
Заголовок сообщения: 

Сие похоже из классического Оберона идет...

Автор:  Vlad [ Среда, 18 Апрель, 2007 08:59 ]
Заголовок сообщения: 

Борис Рюмшин писал(а):
Сие похоже из классического Оберона идет...


Это, типа, вместо препроцессора? :)

Автор:  Илья Ермаков [ Среда, 18 Апрель, 2007 10:04 ]
Заголовок сообщения: 

Типа, да :-) :-)

Автор:  Евгений Темиргалеев [ Среда, 18 Апрель, 2007 14:16 ]
Заголовок сообщения: 

Это не всместо препроцессора, а вместо условной компиляции, которая иногда бывает нужна. Целиком препроцессор в оберонах не был и не будет нужен.

Кстати, если касается только кода, вполне можно обойтись следующим:
Код:
CONST
  someOption = TRUE (*FALSE*);
...
PROCEDURE Proc;
BEGIN
  ...
  IF someOption THEN ... END
END Proc;

Автор:  batyrmastyr [ Среда, 18 Апрель, 2007 16:28 ]
Заголовок сообщения: 

Евгений Темиргалеев писал(а):
...Кстати, если касается только кода, вполне можно обойтись следующим:
Код:
CONST
  someOption = TRUE (*FALSE*);
...
PROCEDURE Proc;
BEGIN
  ...
  IF someOption THEN ... END
END Proc;

Не скажи, бывает требуется менять много где и сразу, например тестируешь какую-нить структуру из сложных объектов на работе с числами/строками, а потом на работе с нужным типом данных, который неудобно смотреть в отладчике или логе :)

Автор:  Trurl [ Четверг, 19 Апрель, 2007 09:31 ]
Заголовок сообщения: 

Евгений Темиргалеев писал(а):
Это не всместо препроцессора, а вместо условной компиляции, которая иногда бывает нужна.

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

Кстати, еще одно возможное применение:
Код:
(*[comment|en|ru|fr] *)

Автор:  Александр Ильин [ Четверг, 19 Апрель, 2007 10:00 ]
Заголовок сообщения: 

Условная компиляция позволяет задавать директивы, которые будут применены к нескольким файлам сразу, это главное отличие от селекторов. Зато селекторы не увеличивают время компиляции, в отличие, например, от препроцессоров.

Автор:  Trurl [ Четверг, 19 Апрель, 2007 10:45 ]
Заголовок сообщения: 

Александр Ильин писал(а):
Условная компиляция позволяет задавать директивы, которые будут применены к нескольким файлам сразу, это главное отличие от селекторов.

А что мешает слелать то же с селекторами?
DevCompiler.CompileThis
Module1(dir:val)
Module2(dir:val)

Автор:  Александр Ильин [ Четверг, 19 Апрель, 2007 11:41 ]
Заголовок сообщения: 

Trurl писал(а):
А что мешает слелать то же с селекторами?
DevCompiler.CompileThis
Module1(dir:val)
Module2(dir:val)

Ничто не мешает, это правда. Сделаем тогда и следующий шаг: в команде CompileThis каждое значение val заменим на значение селектора, а перед этой командой разместим селекторы для каждой из директив компиляции. А что, получается довольно наглядная панель управления компиляцией...
Все-таки, Обероны - потрясающий по возможностям конструктор.

Автор:  Info21 [ Пятница, 20 Апрель, 2007 01:14 ]
Заголовок сообщения: 

Четто мне боязно: куда ж мы так заедем.
Классический случай "... и все бросились играть в новую комбинаторную игру".

Автор:  Евгений Темиргалеев [ Пятница, 20 Апрель, 2007 14:35 ]
Заголовок сообщения: 

Игра не игра :) , но условная компиляция нужна в отлаточных целях. Как верно подметил Trurl, на промежуточных стадиях. Например, проверка инварианта для сложной динамической структуры. Когда алгоритм обкатан, проверки убираются, т. к. они гарантируеются правильностью алгоритма. В правильности на 100%, конечно, нельзя быть увереным, но и польностью верифицировать весь код для 100% уверенности - далеко не всегда хватит времени...

Автор:  Info21 [ Пятница, 20 Апрель, 2007 17:27 ]
Заголовок сообщения: 

Евгений Темиргалеев писал(а):
.. но условная компиляция нужна в отлаточных целях ..


Дак отлаживали, понимаем...

Но что-то тут напоминает, идейно, пошаговый дежукер...

Автор:  Евгений Темиргалеев [ Вторник, 04 Март, 2008 16:07 ]
Заголовок сообщения:  Re: DevSelectors

Илья Ермаков писал(а):
Надеюсь, Trurl сейчас нам объяснит...

Вот понадобилось в одном месте варианты навести. Думаю, дай прилеплю selectors. Ан не удалось - при сохранении документа трэпы идут. Вроде когда вбиваешь с нуля - нормально, а когда копируешь селекторы с вариантами - трэп при сохранении.

(модератор, 03.04.2014) см. viewtopic.php?t=3972

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/