View Issue Details

IDProjectCategoryView StatusLast Update
0001678WishesMacropublic2017-11-27 13:38
ReporterRaistlinAssigned To 
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Product Version 
Target VersionFixed in Version3.0 
Summary0001678: Тихое поведение panel.setpath() при несуществующем пути
DescriptionДобавить в синтаксис panel.setpath() параметр Mode:
E=panel.setpath(panelType,path[,filename[,Mode]])

Mode=1: выдавать сообщение об ошибке, если path не существует
Mode=0: не выдавать сообщение об ошибке
TagsNo tags attached.
Build5100

Relationships

related to 0002406 closedzg Far Manager Panel.SetPath не работает 

Activities

JohnDoe

2011-01-19 14:12

updater   bugnote:0006194

А вы пробовали предварительно воспользоваться panel.exist()?

Raistlin

2011-01-19 15:03

reporter   bugnote:0006198

Так panel.exist() смотрит-то только в текущую папку.
Конечно, можно разбить путь на куски и переходить по шагам, начиная от корня и проверяя существование каждого каталога в цепочке, но это IMHO способ для тех пионеров, которые без трудностей не могут. Остальным предлагаемый параметр пригодится.

JohnDoe

2011-01-19 15:31

updater   bugnote:0006200

Может лучше тогда усовершенствовать panel.exist()?
Либо релизовать этот режим в более общем виде, посредством mmode(x,y).

P.S.
А для пионеров простор для деятельности велик, например существование пути в реестре можно проверить с помощью reg.exe ;-)

Raistlin

2011-01-19 16:12

reporter   bugnote:0006201

Last edited: 2011-01-19 16:13

View 2 revisions

panel.exist() возвращает индекс элемента, как это совместить с таким усовершенствованием?

mmode() - годный вариант, но с mmode() пока и так достаточно проблем, я открывал инцидент на эту тему.

IMHO подобные функции вообще не должны интерактивно взаимодействовать с пользователем, на это есть msgbox(). Так что, возможно, не стоит городить огород с новым параметром, а просто изменить поведение функции.

Тут еще одна проблема - panel.setpath(), я так понимаю, вообще не работает с плагинами. Например, если запустили RegistryBrowser:
macro:post panel.setpath(0,"HKEY_CURRENT_USER\\Console")
возвращает ошибку, хотя
cd HKEY_CURRENT_USER\Console
работает. Еще один инцидент?..

Denis

2011-01-19 16:18

reporter   bugnote:0006202

Так же можно воспользоваться fexist.
Но доп. параметер к panel.setpath удобнее.

Raistlin

2011-01-19 16:20

reporter   bugnote:0006203

> Так же можно воспользоваться fexist
То же самое - не работает с плагинами. Наверное, и не должно.

JohnDoe

2011-01-19 16:41

updater   bugnote:0006204

Last edited: 2011-01-19 16:45

View 2 revisions

>panel.exist() возвращает индекс элемента, как это совместить с таким усовершенствованием?
Например panel.exist() в этом случае может открывать нужный путь.
Но это конечно криво, не надо этого.

>Тут еще одна проблема - panel.setpath(), я так понимаю, вообще не работает с плагинами
Тогда нет смысла в Mode.

Raistlin

2011-01-19 16:45

reporter   bugnote:0006205

>0
Гениально. И как тогда различать существование и несуществование?

>Тогда нет смысла в Mode.
В Mode действительно нет смысла - надо сделать так, чтобы panel.setpath() об ошибках сообщала только возвращаемым значением. Независимо от того, работает она с плагинами или нет.

JohnDoe

2011-01-19 17:45

updater   bugnote:0006206

>Гениально. И как тогда различать существование и несуществование?
0 это и есть несуществование. (Нумерация элементов начинается с 1)
А вообще перечитайте цитируемое, оно поменялось.

>надо сделать так, чтобы panel.setpath() об ошибках сообщала только возвращаемым значением
Попробуйте помыслить шире: ведь panel.setpath наверняка не одна такая.
Нужно какое-то общее решение, не добавлять же повсюду параметр Mode.

Raistlin

2011-01-19 17:49

reporter   bugnote:0006207

Last edited: 2011-01-19 17:50

View 2 revisions

Так я и мыслю шире: никакая функция, кроме msgbox(), не должна взаимодействовать с пользователем путем выдачи сообщений.

JohnDoe

2011-01-19 18:03

updater   bugnote:0006208

Last edited: 2011-01-19 18:07

View 3 revisions

Разумно, значит тикет должен быть в общем виде, а не только про setpath.

Raistlin

2011-01-19 18:05

reporter   bugnote:0006209

Помечаю отработанным и открываю новый?

JohnDoe

2011-01-19 18:08

updater   bugnote:0006210

Подождём что другие скажут.
Лично я ничего не имею против молчаливого поведения функции, без всяких дополнительных параметров, ибо лишние опции вредны.

Denis

2011-01-19 18:11

reporter   bugnote:0006211

+1 за молчаливое поведение. Если программист хочет видеть ошибки - msgbox в его распоряжении.

Issue History

Date Modified Username Field Change
2011-01-19 03:58 Raistlin New Issue
2011-01-19 14:12 JohnDoe Note Added: 0006194
2011-01-19 15:03 Raistlin Note Added: 0006198
2011-01-19 15:31 JohnDoe Note Added: 0006200
2011-01-19 16:12 Raistlin Note Added: 0006201
2011-01-19 16:13 Raistlin Note Edited: 0006201 View Revisions
2011-01-19 16:18 Denis Note Added: 0006202
2011-01-19 16:20 Raistlin Note Added: 0006203
2011-01-19 16:41 JohnDoe Note Added: 0006204
2011-01-19 16:45 JohnDoe Note Edited: 0006204 View Revisions
2011-01-19 16:45 Raistlin Note Added: 0006205
2011-01-19 17:45 JohnDoe Note Added: 0006206
2011-01-19 17:49 Raistlin Note Added: 0006207
2011-01-19 17:50 Raistlin Note Edited: 0006207 View Revisions
2011-01-19 18:03 JohnDoe Note Added: 0006208
2011-01-19 18:05 Raistlin Note Added: 0006209
2011-01-19 18:07 JohnDoe Note Edited: 0006208 View Revisions
2011-01-19 18:07 JohnDoe Note Edited: 0006208 View Revisions
2011-01-19 18:08 JohnDoe Note Added: 0006210
2011-01-19 18:11 Denis Note Added: 0006211
2013-02-03 04:34 alexy Severity minor => feature
2017-11-27 12:45 DrKnS Status new => closed
2017-11-27 12:45 DrKnS Resolution open => fixed
2017-11-27 12:45 DrKnS Fixed in Version => 3.0
2017-11-27 12:45 DrKnS Build => 5100
2017-11-27 13:38 JohnDoe Relationship added related to 0002406