Опять непонятки с DM_LISTSETITEM Topic is solved

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Опять непонятки с DM_LISTSETITEM

Post by buniak_a_h »

У меня следующий мелкий скрипт вызывает падение ФАРа:
  1. local F = far.Flags
  2.  
  3. ----------------------------------------------------------------------------
  4.  
  5. Event {
  6.  
  7.   group       = "DialogEvent";
  8.  
  9.   description = "Err";
  10.  
  11.   condition   = function(Event, Param)
  12.  
  13.     if Area.UserMenu then
  14.  
  15.       if Param.hDlg:send(F.DM_GETITEMDATA, 1) == 0 then -- Блокировка повторного выполнения
  16.  
  17.         Param.hDlg:send(F.DM_SETITEMDATA, 1, 1)
  18.  
  19.         return true
  20.  
  21.       end
  22.  
  23.     end
  24.  
  25.   end;
  26.  
  27.   action      = function(Event, Param)
  28.  
  29.     local hDlg = Param.hDlg
  30.  
  31.     hDlg:send(F.DM_LISTSETDATA, 1, {Index=1, Data=1})
  32.  
  33.   end;
  34.  
  35. }
Как воспроизвести:
  • Установить макрос
  • Вызвать пользовательское МЕНЮ (F2)
  • Enter на первом пункте МЕНЮ. Если первый пункт выполнить нельзя, поменяйте номер того пункта, который можно вызвать безболезненно, после Index= в строке #16
Это я что-то сделал неправильно, или на ошибку напоролся?
P/S. Если нужен дамп - напишите, что конкретно прислать. К слову: плагин renewal файл far.pdb тоже обновляет?
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Опять непонятки с DM_LISTSETITEM

Post by Shmuel »

buniak_a_h wrote: Fri 07 Apr, 2023 18:17 Это я что-то сделал неправильно, или на ошибку напоролся?
Насколько я понимаю, DM_LISTSETDATA предназначен для использования в своих диалогах, а это не ваш диалог, а диалог Фара.
В код Фара сейчас не заглядывал, но допускаю, что Фар сам выставляет данные на элементы списка, а ваш скрипт эти данные заменяет своими. При этом краш вполне вероятен.
User avatar
zg
zero-gravity
Posts: 6034
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Опять непонятки с DM_LISTSETITEM

Post by zg »

buniak_a_h wrote: Fri 07 Apr, 2023 18:17 hDlg:send(F.DM_LISTSETDATA, 1, {Index=1, Data=1})
зачем вы так делаете?
2useven10
Posts: 5226
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 314 times

Опять непонятки с DM_LISTSETITEM

Post by 2useven10 »

buniak_a_h wrote: Fri 07 Apr, 2023 18:17К слову:
Кнопка [ Setup ] не вызывает никаких ассоциаций?
Last edited by 2useven10 on Fri 07 Apr, 2023 19:28, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Опять непонятки с DM_LISTSETITEM

Post by buniak_a_h »

zg wrote: Fri 07 Apr, 2023 19:24зачем вы так делаете?
Мне надо пометить некоторые пункты МЕНЮ так, чтобы внешне это не было видно. Чтобы по хоткею я мог эти позиции скрывать и показывать
User avatar
zg
zero-gravity
Posts: 6034
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Опять непонятки с DM_LISTSETITEM

Post by zg »

buniak_a_h wrote: Fri 07 Apr, 2023 19:50 Мне надо пометить некоторые пункты МЕНЮ так, чтобы внешне это не было видно.
а то что это не ваше меню и в data оно хранит свои данные вас не смущает?
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Опять непонятки с DM_LISTSETITEM

Post by buniak_a_h »

zg wrote: Fri 07 Apr, 2023 20:39 а то что это не ваше меню и в data оно хранит свои данные вас не смущает?
А я проверил. Там ничего не было
User avatar
zg
zero-gravity
Posts: 6034
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Опять непонятки с DM_LISTSETITEM

Post by zg »

buniak_a_h wrote: Fri 07 Apr, 2023 20:42 А я проверил. Там ничего не было
фар для своих данных нулевой указатель возвращает.
Post Reply

Return to “Нужна помощь”