Page 1 of 1

Возвращаемые значения panel.GetCmdLineSelection

Posted: Wed 15 Jan, 2020 20:32
by LAT
При отсутствии выделения в командной строке код

Code: Select all

local Start, End = panel.GetCmdLineSelection(nil)
всегда (по крайней мере, в моих экспериментах) возвращает Start = 1 и End = 0. Выглядит как-то нелогично: если нет выделения, то в честь чего Start = 1? При попытках использовать в скриптах - еще и неудобно: нужно обязательно анализировать End на предмет значения 0. Имхо, если нет выделения, уместно возвращать Start = End = 0.
ЗЫ. Все это мелкие неудобства, и обходятся, но может, стоит поменять поведение?
ЗЗЫ. [неверное, лишнее] FAR 3.0.5545 x86, Win10 1903.

Возвращаемые значения panel.GetCmdLineSelection

Posted: Wed 15 Jan, 2020 20:50
by Shmuel
LAT wrote: Wed 15 Jan, 2020 20:32 возвращает Start = 1 и End = 0. Выглядит как-то нелогично: если нет выделения, то в честь чего Start = 1?
Это выглядит нелогично только при недостаточном опыте в Lua. Start=1 и End=0 обозначают пустой стринг ("") в начале комстроки. А Start=1 в честь того, что в Lua отсчёт с 1.
Насчёт неудобства для скриптов - скорее всего от того, что вы пытаетесь что-то делать на Lua как это делается на каком-то другом языке.

Возвращаемые значения panel.GetCmdLineSelection

Posted: Wed 15 Jan, 2020 21:03
by LAT
Shmuel wrote: Wed 15 Jan, 2020 20:50
LAT wrote: Wed 15 Jan, 2020 20:32 возвращает Start = 1 и End = 0. Выглядит как-то нелогично: если нет выделения, то в честь чего Start = 1?
Это выглядит нелогично только при недостаточном опыте в Lua. Start=1 и End=0 обозначают пустой стринг ("") в начале комстроки. А Start=1 в честь того, что в Lua отсчёт с 1.Насчёт неудобства для скриптов - скорее всего от того, что вы пытаетесь что-то делать на Lua как это делается на каком-то другом языке.
Думаю, операторы ветвления (if, else, case или elseif - или как они у кого там называются) существуют в подавляющем большинстве языков программирования (в моем алгоритме фактически ничего больше нету). [Мелкая] проблема больше связана с появляющейся "ассиметричностью" Start и End: если значения End достаточно, чтобы понять, что выделения нет, то вот со Start-ом как-то хуже. Но это не критично. Если это не недопродуманность, а стабильная фича, то можно жить и с этим :).

Возвращаемые значения panel.GetCmdLineSelection

Posted: Wed 15 Jan, 2020 21:10
by Shmuel
Это стабильная фича языка. Условие наличия выделения: End >= Start.

Возвращаемые значения panel.GetCmdLineSelection

Posted: Wed 15 Jan, 2020 21:12
by LAT
Shmuel wrote: Wed 15 Jan, 2020 21:10Это стабильная фича языка. Условие наличия выделения: End >= Start.
Ясно, спасибо.