ProcessName

Здесь можно сообщить о найденных багах в Far.
Post Reply
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

ProcessName

Post by buniak_a_h »

Помогите, пожалуйста! Чего-то я не понимаю...
В командной строке ввожу:
lua:=far.ProcessName(bor(far.Flags.PN_CMPNAMELIST,far.Flags.PN_SKIPPATH), 'cost*.*', 'D:\\PROG\\CostXFinder51.dfm')
В ответ получаю false.
Более того! Ввожу тоже самое, но без пути в имени файла:
lua:=far.ProcessName(bor(far.Flags.PN_CMPNAMELIST,far.Flags.PN_SKIPPATH), 'cost*.*', 'CostXFinder51.dfm')
Также получаю false!
И даже ещё страньше!
lua:=far.ProcessName(bor(far.Flags.PN_CMPNAME,far.Flags.PN_SKIPPATH), 'cost.dfm', 'cost.dfm') (т.е. строки во втором и третьем параметрах совпадают!)
тоже возвращает false!!!
При этом БЕЗ PN_SKIPPATH и без пути во втором параметре:
lua:=far.ProcessName(far.Flags.PN_CMPNAMELIST, 'cost*.*', 'CostXFinder51.dfm')
всё работает, как я ожидаю. Т.е. возвращает true
В описании функции про флаг PN_CMPNAMELIST написано:
Может сочетаться с PN_CMPNAME или PN_CMPNAMELIST - указывает на то, что путь к имени файла при сравнении должен игнорироваться
А получается, что при наличии этого флага независимо от наличия путей функция возвращает false. Что я делаю или понимаю неправильно?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

ProcessName

Post by DrKnS »

buniak_a_h wrote: Sat 02 Sep, 2017 00:15Что я делаю или понимаю неправильно?
Вы смотрите описание функции не в том мануале.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

ProcessName

Post by buniak_a_h »

DrKnS, спасибо.
В этих мануалах сам чёрт ногу сломит... :-(
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

ProcessName

Post by buniak_a_h »

Господа! Разъясните мне, пожалуйста, ещё один момент.
Если в вызове функции far.ProcessName указан флаг PN_CMPNAMELIST, то в маске можно указать имя именованной группы масок (например, <arc>). При этом результат вызова, почему-то, зависит от порядка следования элементов в списке. Например, far.ProcessName('PN_CMPNAMELIST',"*.jpg,<qqq>",'qqq.jpg') возвращает true (правильно), а far.ProcessName('PN_CMPNAMELIST',"<qqq>,*.jpg",'qqq.jpg') (отличается только перестановкой <qqq> в начало) - false (???). При этом именованной группы <qqq> нету. Но если указать существующую группу, то: если именованная группа в конце списка, то всё нормально, а если в начале - результат у меня меняется от теста к тесту, закономерности я не вычислил. В описании функции правил использования именованных групп масок я не нашёл. Не расскажете?
Last edited by buniak_a_h on Thu 06 Oct, 2022 11:38, edited 1 time in total.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

ProcessName

Post by Shmuel »

IMHO, наличие невалидной группы в списке масок (в любой позиции списка) не должно влиять на результат, данная группа должна просто игнорироваться. (Естественно, могут быть и другие мнения).
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

ProcessName

Post by buniak_a_h »

Shmuel, я тоже так думал. Вот, оказалось, нет. Такое ощущение, что, встретив невалидную группу, процессор вызывает прерывание, которое приводит к прекращению обработки списка, что мне кажется неверным.
Пример: я поставляю скрипт третьим лицам, в списке присутствует имя группы. У получателя такой группы нет - в результате, у него скрипт вообще не работает.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

ProcessName

Post by zg »

buniak_a_h wrote: Thu 06 Oct, 2022 12:10 Такое ощущение, что, встретив невалидную группу, процессор вызывает прерывание, которое приводит к прекращению обработки списка, что мне кажется неверным.
исходники доступны, зачем писать об ощущениях (неправильных), если можно посмотреть. в обработке масок есть серьёзный баг. если тут string_view заменить на string, всё работает ожидаемо.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

ProcessName

Post by buniak_a_h »

zg wrote: Thu 06 Oct, 2022 12:51исходники доступны
Не для средних умов… Я писал на Си последний раз в 1986-м году; теперь пытался посмотреть, но ничего не понял. Макровызовы, мне абсолютно незнакомые, стиль непонятный - короче, всё с тех пор изменилось.
Я рад, что Вы знаете об имеющемся баге и, надеюсь, исправите (если всё так просто).
Last edited by buniak_a_h on Thu 06 Oct, 2022 13:03, edited 1 time in total.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

ProcessName

Post by zg »

buniak_a_h wrote: Thu 06 Oct, 2022 13:03Не для средних умов…
зачем тогда ваше предыдущее сообщение? какая от него польза?
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

ProcessName

Post by buniak_a_h »

zg wrote: Thu 06 Oct, 2022 13:04какая от него польза?
Ну вот, баг нашли. А не написал бы - Вы не стали бы даже смотреть.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

ProcessName

Post by zg »

buniak_a_h, тут — багрепорт, а вот тут — непонятно что.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

ProcessName

Post by buniak_a_h »

zg wrote: Thu 06 Oct, 2022 20:16тут — багрепорт
Это - вообще не багрепорт. Я даже не был уверен, что это - баг. Варианты: (а)я что-то делаю не так; (б) ошибка (недосказанность) в описании (типа именованные группы должны идти в конце списка и быть определены); (в) баг. О последнем я вообще думал в последнюю очередь: место часто используемое; баг должен был вылезти давным-давно.
Post Reply

Return to “Глюки и баги”