Маски файлов в API

Разработка Far.
Shmuel
Posts: 5096
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: Маски файлов

Post by Shmuel » Fri 02 Mar, 2012 13:08

Latest post of the previous page:

NightRoman wrote:Но все-таки на один парсинг будет больше. Может, все же одним вызовом все и решать - и работу (match|not-match), и проверку на валидость?
Фар делает парсинг маски при каждом вызове ProcessName. Какая разница, будет сделан парсинг 1000 раз или 1001 ? А случай, когда надо проверять один-единственный файл, в любом случае отработает быстро, так стоит ли экономить на спичках?

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Fri 02 Mar, 2012 13:16

Ну в общем да, наверное, я к ненужному совершенству призывал.

User avatar
DrKnS
Posts: 4563
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 113 times
Contact:

Re: Маски файлов

Post by DrKnS » Fri 02 Mar, 2012 13:28

Если вам хочется экономить, то лучше придумать, как не делать парсинг 1000 раз.

Shmuel
Posts: 5096
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: Маски файлов

Post by Shmuel » Fri 02 Mar, 2012 14:02

Ну, эти вещи уже давно отработаны. Просто я не уверен, что стоит сейчас этим заниматься.

Например, в регекспах есть функция "компиляции", где стринг-регексп парсится, и заполняется определённая внутренняя структура, указатель на которую ф-ция компиляции возвращает. В дальнейшем, при вызовах функций поиска/сопоставления с текстом, уже надо передавать полученный указатель, таким образом парсинг делается только один раз.

Ещё один вариант - кеширование.

User avatar
DrKnS
Posts: 4563
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 113 times
Contact:

Re: Маски файлов

Post by DrKnS » Fri 02 Mar, 2012 17:54

Добавил кеширование.

Shmuel
Posts: 5096
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: Маски файлов

Post by Shmuel » Fri 02 Mar, 2012 22:24

DrKnS wrote:Добавил кеширование.
Приближаемся к совершенству, о котором говорил NightRoman. :)

Видимо в результате кеширования появилось некоторое изменение поведения: если для нескольких имён подряд вызывать (PN_CMPNAMELIST | PN_SHOWERRORMESSAGE) с одной и той же невалидной маской, то раньше был warning для каждого вызова, а теперь - только для первого. По идее, раньше было правильно.

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Sat 03 Mar, 2012 04:21

Ожидал, что PN_CMPNAMELIST полностью совместим теперь с масками Фара, то есть включая и форму /regex/, а это не так, или я что не так делаю?
Если это так, то может уж допилить один шажок до полной совместимости? И документировать проще будет :)

Shmuel
Posts: 5096
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: Маски файлов

Post by Shmuel » Sat 03 Mar, 2012 07:00

Вроде у меня работает. Можно пример в студию?

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Sat 03 Mar, 2012 10:03

Shmuel wrote:Вроде у меня работает. Можно пример в студию?
Достаточно этого замечания, спасибо. В регистрозависимости регулярок дело было, которую я не учел.

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Sat 03 Mar, 2012 10:38

Философский и вычурный вопрос по пустой маске. Всегда возвращается несовпадение. Но для пустой строки на сравнение, может, все же совпадение возвращать?

В PowerShell, например, это так

Code: Select all

0> 'bar' -like ''
False
0> '' -like ''
True

Shmuel
Posts: 5096
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: Маски файлов

Post by Shmuel » Sat 03 Mar, 2012 10:56

Для ProcessName пустая маска - невалидная, именно поэтому возвращается несовпадение.
Как трактовать пустой паттерн - обычно определяет аппликация, единообразия здесь нет.
Неконсистентность некоторая есть в том, что маска |a, в которой пустая разрешающая часть - валидная (трактуется как *|a), а вот пустая маска не трактуется как *.

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Sat 03 Mar, 2012 10:56

А, и попутно важно, что пустая маска считается невалидной (тогда логично, что всегда отлуп). Но логично ли пустую маску считать невалидной?
Это первичный вопрос.

UPD: а, опередили, да.

Shmuel
Posts: 5096
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: Маски файлов

Post by Shmuel » Sat 03 Mar, 2012 11:01

Для меня невалидность пустой маски - удобна. В диалоге поиска, если пользователь нажимает Enter при пустой маске, это как правило означает, что он забыл ввести маску.

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Sat 03 Mar, 2012 11:03

Shmuel wrote:Для меня невалидность пустой маски - удобна. В диалоге поиска, если пользователь нажимает Enter при пустой маске, это как правило означает, что он забыл ввести маску.
Какого диалога поиска? В Фаровском это будет трактоваться как *

User avatar
John Doe
Бюрократ
Posts: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

Re: Маски файлов

Post by John Doe » Sat 03 Mar, 2012 11:04

NightRoman wrote:Какого диалога поиска? В Фаровском это будет трактоваться как *
Это уже ИИ.
От одного подобного ИИ избавились уже, осталось избавиться и от этого.

Shmuel
Posts: 5096
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: Маски файлов

Post by Shmuel » Sat 03 Mar, 2012 11:05

Как уже сказано было выше - аппликация сама решает, что с этим делать.
Да, поддерживаю избавление от этого.

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Sat 03 Mar, 2012 19:26

Тех. вопросы:

1. Можно ли при задании групп использовать группы? (могу и попробовать, но ответ и другим будет полезен)
2. В меню групп что делает [Ctrl-R]? (комбинация указана среди подсказок внизу)

Post Reply

Return to “Development”