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