Latest post of the previous page:
Можно и так, и так (если сообщение опционально).Маски файлов в API
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
Но все-таки на один парсинг будет больше. Может, все же одним вызовом все и решать - и работу (match|not-match), и проверку на валидость?
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Маски файлов
Фар делает парсинг маски при каждом вызове ProcessName. Какая разница, будет сделан парсинг 1000 раз или 1001 ? А случай, когда надо проверять один-единственный файл, в любом случае отработает быстро, так стоит ли экономить на спичках?NightRoman wrote:Но все-таки на один парсинг будет больше. Может, все же одним вызовом все и решать - и работу (match|not-match), и проверку на валидость?
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Маски файлов
Ну, эти вещи уже давно отработаны. Просто я не уверен, что стоит сейчас этим заниматься.
Например, в регекспах есть функция "компиляции", где стринг-регексп парсится, и заполняется определённая внутренняя структура, указатель на которую ф-ция компиляции возвращает. В дальнейшем, при вызовах функций поиска/сопоставления с текстом, уже надо передавать полученный указатель, таким образом парсинг делается только один раз.
Ещё один вариант - кеширование.
Например, в регекспах есть функция "компиляции", где стринг-регексп парсится, и заполняется определённая внутренняя структура, указатель на которую ф-ция компиляции возвращает. В дальнейшем, при вызовах функций поиска/сопоставления с текстом, уже надо передавать полученный указатель, таким образом парсинг делается только один раз.
Ещё один вариант - кеширование.
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Маски файлов
Приближаемся к совершенству, о котором говорил NightRoman.DrKnS wrote:Добавил кеширование.
Видимо в результате кеширования появилось некоторое изменение поведения: если для нескольких имён подряд вызывать (PN_CMPNAMELIST | PN_SHOWERRORMESSAGE) с одной и той же невалидной маской, то раньше был warning для каждого вызова, а теперь - только для первого. По идее, раньше было правильно.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
Ожидал, что PN_CMPNAMELIST полностью совместим теперь с масками Фара, то есть включая и форму /regex/, а это не так, или я что не так делаю?
Если это так, то может уж допилить один шажок до полной совместимости? И документировать проще будет
Если это так, то может уж допилить один шажок до полной совместимости? И документировать проще будет
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
Достаточно этого замечания, спасибо. В регистрозависимости регулярок дело было, которую я не учел.Shmuel wrote:Вроде у меня работает. Можно пример в студию?
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
Философский и вычурный вопрос по пустой маске. Всегда возвращается несовпадение. Но для пустой строки на сравнение, может, все же совпадение возвращать?
В PowerShell, например, это так
В PowerShell, например, это так
Code: Select all
0> 'bar' -like ''
False
0> '' -like ''
True
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Маски файлов
Для ProcessName пустая маска - невалидная, именно поэтому возвращается несовпадение.
Как трактовать пустой паттерн - обычно определяет аппликация, единообразия здесь нет.
Неконсистентность некоторая есть в том, что маска |a, в которой пустая разрешающая часть - валидная (трактуется как *|a), а вот пустая маска не трактуется как *.
Как трактовать пустой паттерн - обычно определяет аппликация, единообразия здесь нет.
Неконсистентность некоторая есть в том, что маска |a, в которой пустая разрешающая часть - валидная (трактуется как *|a), а вот пустая маска не трактуется как *.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
А, и попутно важно, что пустая маска считается невалидной (тогда логично, что всегда отлуп). Но логично ли пустую маску считать невалидной?
Это первичный вопрос.
UPD: а, опередили, да.
Это первичный вопрос.
UPD: а, опередили, да.
-
- Posts: 6839
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Маски файлов
Для меня невалидность пустой маски - удобна. В диалоге поиска, если пользователь нажимает Enter при пустой маске, это как правило означает, что он забыл ввести маску.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Маски файлов
Какого диалога поиска? В Фаровском это будет трактоваться как *Shmuel wrote:Для меня невалидность пустой маски - удобна. В диалоге поиска, если пользователь нажимает Enter при пустой маске, это как правило означает, что он забыл ввести маску.