View Issue Details

IDProjectCategoryView StatusLast Update
0003748Wishes.PluginsLuaMacro / Macro Browserpublic2019-11-01 14:54
ReporterJohnDoeAssigned Toshmuel 
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP3
Product Version 
Target VersionFixed in Version 
Summary0003748: Panel.Item: возвращаемое значение при некорректных параметрах
DescriptionВ настоящий момент при некорректных параметрах (в частности itemIdx) или других исключительных случаях функция возвращает 0 (или false для Property==8).

Эти же значения могут быть возвращены и в штатных ситуациях.

Предлагаю в невалидных ситуациях возвращать nil.
Additional Informationhttps://api.farmanager.com/ru/macro/macrocmd/prop_func/panels.html#panel.item
TagsNo tags attached.

Activities

shmuel

2019-10-21 13:01

developer   bugnote:0016622

> В настоящий момент при некорректных параметрах (в частности itemIdx) функция возвращает false.

Мне кажется, в этом случае возвращается 0.

JohnDoe

2019-10-21 13:57

updater   bugnote:0016623

Действительно, для string и number - 0.
А для boolean - false

Тем более стоит упорядочить.

shmuel

2019-10-21 14:05

developer   bugnote:0016624

Стоит может быть и стоит, но ничего не сломано сейчас, по сравнению с тем, что было.
То, что для boolean - false, это не отличается от случаев, когда для number - 0.

Если для несуществующего элемента спросить, выбран ли он (свойство 8), ответ будет, что не выбран. Раньше, когда возвращался 0, это было проблемой, потому что if 0 равносильно if true.

shmuel

2019-10-22 18:48

developer   bugnote:0016625

> В настоящий момент при некорректных параметрах (в частности itemIdx) функция возвращает false.
> Однако false также является валидным значением для Property=8.

Если не сложно, приведите Description в соответствие с реальностью.
Я бы мог это сделать сам, но предпочтительнее, если это сделает автор тикета.

shmuel

2019-10-22 20:21

developer   bugnote:0016626

Если затрудняетесь сформулировать, предлагаю следующий текст:

shmuel wrote

В настоящий момент при некорректных параметрах (в частности itemIdx) или других исключительных случаях функция возвращает 0 (или false для Property==8). Эти же значения могут быть возвращены и в штатных ситуациях.

Предлагаю в невалидных ситуациях возвращать nil.

shmuel

2019-10-28 21:33

developer   bugnote:0016636

Last edited: 2019-10-28 21:34

View 2 revisions

А может быть правильнее будет прерывать макрос ошибкой?

Дело в том, что большинство макрописателей не будет делать 2 проверки, а ограничатся анализом возвращаемой величины по её смыслу. И тут начинаются нежелательные сценарии:
1) проверки == или ~= дадут с вероятностью 50% неправильный результат
2) проверки >, <, >=, <= приведут к невразумительной ошибке типа "попытка сравнить число и nil".

Если мы будем прерываать скрипт ошибкой, то сможем сделать её текст вразумительным.

JohnDoe

2019-10-30 14:04

updater   bugnote:0016637

> 2) проверки >, <, >=, <= приведут к невразумительной ошибке типа "попытка сравнить число и nil".

Большинство ошибок они именно такие)
Открыл исходних, открыл мануал, и после этого всё уразумел.

> А может быть правильнее будет прерывать макрос ошибкой?

Поддерживаю.

shmuel

2019-10-30 23:37

developer   bugnote:0016638

5502.

shmuel

2019-10-31 16:29

developer   bugnote:0016639

Last edited: 2019-10-31 16:45

View 2 revisions

@JohnDoe,
1) вы не хотели бы посмотреть тексты новых сообщений об ошибках и прокомментировать или предложить улучшения? Эти места легко найти в файле macro.cpp, если дать на поиск "PassError".
2) Нужна ли для этих строк локализация, или и так сойдёт?

JohnDoe

2019-11-01 14:35

updater   bugnote:0016640

1.
- No panel selected - что-то не соображу какие случаи охватывает.
- Unsupported panel type - возможно удобней было бы видеть а какие же (не)поддерживаемые, т.е. указать либо те, либо другие.
- Operation not supported - только если операция за пределами 0..23?

2. Сообщения Lua не локализованы, и вроде бы никто не жалуется. Полагаю сойдёт.

shmuel

2019-11-01 14:54

developer   bugnote:0016641

> Operation not supported - только если операция за пределами 0..23?

И ещё 22.

Issue History

Date Modified Username Field Change
2019-10-21 12:55 JohnDoe New Issue
2019-10-21 13:01 shmuel Note Added: 0016622
2019-10-21 13:57 JohnDoe Note Added: 0016623
2019-10-21 14:05 shmuel Note Added: 0016624
2019-10-22 18:48 shmuel Note Added: 0016625
2019-10-22 20:21 shmuel Note Added: 0016626
2019-10-23 14:20 JohnDoe Description Updated View Revisions
2019-10-28 21:33 shmuel Note Added: 0016636
2019-10-28 21:34 shmuel Note Edited: 0016636 View Revisions
2019-10-30 14:04 JohnDoe Note Added: 0016637
2019-10-30 23:37 shmuel Assigned To => shmuel
2019-10-30 23:37 shmuel Status new => feedback
2019-10-30 23:37 shmuel Note Added: 0016638
2019-10-31 13:25 JohnDoe Status feedback => resolved
2019-10-31 16:29 shmuel Note Added: 0016639
2019-10-31 16:45 shmuel Note Edited: 0016639 View Revisions
2019-11-01 14:35 JohnDoe Note Added: 0016640
2019-11-01 14:54 shmuel Status resolved => closed
2019-11-01 14:54 shmuel Resolution open => fixed
2019-11-01 14:54 shmuel Note Added: 0016641