OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 23 Сентябрь, 2019 14:30

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: DevSelectors
СообщениеДобавлено: Вторник, 17 Апрель, 2007 14:06 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9141
Откуда: Россия, Орёл
На форуме Королевства Дельфи Trurl упомянул про такую штуку, как "селекторы", которые предназначены для управления версиями кода.
Они расположены в недокументированном модуле DevSelectors.
С чем их едят, непонятно :-)
Надеюсь, Trurl сейчас нам объяснит...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 17 Апрель, 2007 15:27 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Объясняю. :)
Добавляем в меню что-то вроде.
Код:
"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 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9141
Откуда: Россия, Орёл
Круть!

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 17 Апрель, 2007 15:52 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4302
Откуда: Россия, Орёл
Сие похоже из классического Оберона идет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 18 Апрель, 2007 08:59 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Борис Рюмшин писал(а):
Сие похоже из классического Оберона идет...


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 18 Апрель, 2007 10:04 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9141
Откуда: Россия, Орёл
Типа, да :-) :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 18 Апрель, 2007 14:16 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Это не всместо препроцессора, а вместо условной компиляции, которая иногда бывает нужна. Целиком препроцессор в оберонах не был и не будет нужен.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 18 Апрель, 2007 16:28 

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 19 Апрель, 2007 09:31 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Евгений Темиргалеев писал(а):
Это не всместо препроцессора, а вместо условной компиляции, которая иногда бывает нужна.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 19 Апрель, 2007 10:00 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2311
Откуда: Россия, Томск
Условная компиляция позволяет задавать директивы, которые будут применены к нескольким файлам сразу, это главное отличие от селекторов. Зато селекторы не увеличивают время компиляции, в отличие, например, от препроцессоров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 19 Апрель, 2007 10:45 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Александр Ильин писал(а):
Условная компиляция позволяет задавать директивы, которые будут применены к нескольким файлам сразу, это главное отличие от селекторов.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 19 Апрель, 2007 11:41 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2311
Откуда: Россия, Томск
Trurl писал(а):
А что мешает слелать то же с селекторами?
DevCompiler.CompileThis
Module1(dir:val)
Module2(dir:val)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 20 Апрель, 2007 01:14 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8174
Откуда: Троицк, Москва
Четто мне боязно: куда ж мы так заедем.
Классический случай "... и все бросились играть в новую комбинаторную игру".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 20 Апрель, 2007 14:35 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Игра не игра :) , но условная компиляция нужна в отлаточных целях. Как верно подметил Trurl, на промежуточных стадиях. Например, проверка инварианта для сложной динамической структуры. Когда алгоритм обкатан, проверки убираются, т. к. они гарантируеются правильностью алгоритма. В правильности на 100%, конечно, нельзя быть увереным, но и польностью верифицировать весь код для 100% уверенности - далеко не всегда хватит времени...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 20 Апрель, 2007 17:27 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8174
Откуда: Троицк, Москва
Евгений Темиргалеев писал(а):
.. но условная компиляция нужна в отлаточных целях ..


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DevSelectors
СообщениеДобавлено: Вторник, 04 Март, 2008 16:07 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Илья Ермаков писал(а):
Надеюсь, Trurl сейчас нам объяснит...

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

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


Последний раз редактировалось Евгений Темиргалеев Четверг, 03 Апрель, 2014 14:53, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB