Константы в макроязыке

Здесь обсуждается всё, что касается макросов.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Константы в макроязыке

Post by Skirda »

Latest post of the previous page:

и че делать будем?
надо что-то исправлять...
We are the Borg. You will be assimilated.
So Say We All!
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Константы в макроязыке

Post by HaRT »

Skirda wrote:и че делать будем?
надо что-то исправлять...
Понятно, что без потери совместимости тут ничего не исправить. Т.ч. надо одно из:
0. посыпать голову пеплом и оставить это, как есть (возможно, заострив на этом внимание в документации);
1. изменить смысл значений Dlg.ItemType, громко во всеуслышание объявить про breaking change и безропотно отвечать на все багрепорты, которые из этого вырастут;
2. ввести новое состояние (например, Dlg.CurItemType) с правильным набором значений, а прежнее (Dlg.ItemType) объявить устаревшим и подлежащим искоренению.

Лично я за вариант 2.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Re: Константы в макроязыке

Post by t-rex »

А есть больше 2 человек которые вообще используют такой макрос и к тому же ещё не читают этот форум?
Я за пункт 1.
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Константы в макроязыке

Post by zg »

t-rex wrote:А есть больше 2 человек которые вообще используют такой макрос и к тому же ещё не читают этот форум?
Я за пункт 1.
+1!
User avatar
WARP ItSelf
Самый умный
Posts: 1011
Joined: Tue 15 Mar, 2005 23:19
Contact:

Re: Константы в макроязыке

Post by WARP ItSelf »

А этот самый ItemType еще и небось в 1.71 появился только. Тогда точно "breaking change".
Никто не знал, а я...
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: Константы в макроязыке

Post by Kildor »

+1 за первый пункт, если будет где-нибудь описание того, что на что сменилось.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Константы в макроязыке

Post by Skirda »

Ok, breaking change.

Тогда у Dlg.ItemType все то же самое, что возвращает Dlg.GetValue(XXX,1), плюс изменения:
  • -1 - ошибка, например, Dlg.ItemType вызван не в диалоге
  • 0x8004 - Выбор из истории поля ввода
  • 0x800A - Выбор из комбинированного списка
We are the Borg. You will be assimilated.
So Say We All!
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Константы в макроязыке

Post by HaRT »

Skirda wrote:Тогда у Dlg.ItemType все то же самое, что возвращает Dlg.GetValue(XXX,1), плюс изменения
Тогда надо и макро-константы исправить и дополнить соответствующим образом. Не исключено, что и у меня руки дойдут.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Константы в макроязыке

Post by HaRT »

Унифицированные значения для Dlg.ItemType и Dlg.ItemType(,DLGGETVALUE_TYPE):

Code: Select all

"DLGITEMTYPE_ERROR"                  =dword:FFFFFFFF
"DLGITEMTYPE_TEXT"                   =dword:00000000
"DLGITEMTYPE_VTEXT"                  =dword:00000001
"DLGITEMTYPE_SINGLEBOX"              =dword:00000002
"DLGITEMTYPE_DOUBLEBOX"              =dword:00000003
"DLGITEMTYPE_EDIT"                   =dword:00000004
"DLGITEMTYPE_PSWEDIT"                =dword:00000005
"DLGITEMTYPE_FIXEDIT"                =dword:00000006
"DLGITEMTYPE_BUTTON"                 =dword:00000007
"DLGITEMTYPE_CHECKBOX"               =dword:00000008
"DLGITEMTYPE_RADIOBUTTON"            =dword:00000009
"DLGITEMTYPE_COMBOBOX"               =dword:0000000A
"DLGITEMTYPE_LISTBOX"                =dword:0000000B
"DLGITEMTYPE_USERCONTROL"            =dword:000000FF
"DLGITEMTYPE_HIST_EDIT"              =dword:00008004
"DLGITEMTYPE_HIST_COMBO"             =dword:0000800A 
А набор DLGGETVALUE_DI_* можно уже и удалить, чтобы не было дублирования.

Кстати, в "EDITORSET_CHAR WORDDIV" хорошо бы заменить пробел на подчерк.
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Исправлены DLGITEMTYPE_HIST_EDIT и DLGITEMTYPE_HIST_COMBO
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Константы в макроязыке

Post by Skirda »

HaRT, проапдейтил. Все замечания на на svn`е.
We are the Borg. You will be assimilated.
So Say We All!
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Константы в макроязыке

Post by HaRT »

Skirda
Пополнение для [AP]Panel.OPIFlags:

Code: Select all

"PANEL_OPIFLAGS_REGULAR"             =dword:00000000 ; панель не плагиновая
"PANEL_OPIFLAGS_USEFILTER"           =dword:00000001 ; используется фильтр на панели
"PANEL_OPIFLAGS_USESORTGROUPS"       =dword:00000002 ; используются группы сортировки на панели
"PANEL_OPIFLAGS_USEHIGHLIGHTING"     =dword:00000004 ; используется раскраска файлов на панели
"PANEL_OPIFLAGS_RAWSELECTION"        =dword:00000010 ; папки на панели плагина выбираются независимо от настроек FAR
"PANEL_OPIFLAGS_REALNAMES"           =dword:00000020 ; используется стандартная обработка файла FAR'ом, если [...]
"PANEL_OPIFLAGS_SHOWNAMESONLY"       =dword:00000040 ; показаны имена без путей
"PANEL_OPIFLAGS_RIGHTALIGNNAMES"     =dword:00000080 ; имена файлов выровнены по правому краю
"PANEL_OPIFLAGS_PRESERVECASE"        =dword:00000100 ; имена файлов показаны в оригинальном регистре (независимо от настроек FAR) 
PS
Я мог бы и сам такие вещи выкладывать в SVN, будь у меня соответствующие разрешения.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Константы в макроязыке

Post by HaRT »

Я там подправил DLGITEMTYPE_HIST_EDIT и DLGITEMTYPE_HIST_COMBO. :oops:
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Константы в макроязыке

Post by Skirda »

проапдейтил svn
We are the Borg. You will be assimilated.
So Say We All!
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Константы в макроязыке

Post by HaRT »

Skirda wrote:проапдейтил svn
А зачем комментарии выкинули? Что ли с ними в каких-то версиях ОС не импортируется?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Константы в макроязыке

Post by Skirda »

комменты на английском пиши
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Константы в макроязыке

Post by John Doe »

Константы это конечно хорошо, но иногда слишком громоздко.
Сравните две эквивалентные функции, служащих для получения значения фокусного элемента диалога:

Code: Select all

Dlg.GetValue(Dlg.GetValue(0,6),0)
Dlg.GetValue(Dlg.GetValue(DLGGETVALUE_SELF_ID,DLGGETVALUE_SELF_CURRENT),DLGGETVALUE_VALUE)
Первый вариант как-то нагляднее получается.

P.S. Извините за то что я свиным рылом ... но ИМХО проблема в том что сама идея вложенности функций Dlg.GetValue(Dlg.GetValue(...)...) не очень-то хороша.
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Обсуждение макросов”