Page 3 of 5

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

Posted: Fri 02 Mar, 2012 13:08
by Shmuel

Latest post of the previous page:

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

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

Posted: Fri 02 Mar, 2012 13:16
by NightRoman
Ну в общем да, наверное, я к ненужному совершенству призывал.

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

Posted: Fri 02 Mar, 2012 13:28
by DrKnS
Если вам хочется экономить, то лучше придумать, как не делать парсинг 1000 раз.

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

Posted: Fri 02 Mar, 2012 14:02
by Shmuel
Ну, эти вещи уже давно отработаны. Просто я не уверен, что стоит сейчас этим заниматься.

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

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

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

Posted: Fri 02 Mar, 2012 17:54
by DrKnS
Добавил кеширование.

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

Posted: Fri 02 Mar, 2012 22:24
by Shmuel
DrKnS wrote:Добавил кеширование.
Приближаемся к совершенству, о котором говорил NightRoman. :)

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

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

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

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

Posted: Sat 03 Mar, 2012 07:00
by Shmuel
Вроде у меня работает. Можно пример в студию?

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

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

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

Posted: Sat 03 Mar, 2012 10:38
by NightRoman
Философский и вычурный вопрос по пустой маске. Всегда возвращается несовпадение. Но для пустой строки на сравнение, может, все же совпадение возвращать?

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

Code: Select all

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

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

Posted: Sat 03 Mar, 2012 10:56
by Shmuel
Для ProcessName пустая маска - невалидная, именно поэтому возвращается несовпадение.
Как трактовать пустой паттерн - обычно определяет аппликация, единообразия здесь нет.
Неконсистентность некоторая есть в том, что маска |a, в которой пустая разрешающая часть - валидная (трактуется как *|a), а вот пустая маска не трактуется как *.

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

Posted: Sat 03 Mar, 2012 10:56
by NightRoman
А, и попутно важно, что пустая маска считается невалидной (тогда логично, что всегда отлуп). Но логично ли пустую маску считать невалидной?
Это первичный вопрос.

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

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

Posted: Sat 03 Mar, 2012 11:01
by Shmuel
Для меня невалидность пустой маски - удобна. В диалоге поиска, если пользователь нажимает Enter при пустой маске, это как правило означает, что он забыл ввести маску.

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

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

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

Posted: Sat 03 Mar, 2012 11:04
by John Doe
NightRoman wrote:Какого диалога поиска? В Фаровском это будет трактоваться как *
Это уже ИИ.
От одного подобного ИИ избавились уже, осталось избавиться и от этого.

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

Posted: Sat 03 Mar, 2012 11:05
by Shmuel
Как уже сказано было выше - аппликация сама решает, что с этим делать.
Да, поддерживаю избавление от этого.