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

Разработка Far.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Latest post of the previous page:

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

1. Можно ли при задании групп использовать группы? (могу и попробовать, но ответ и другим будет полезен)
2. В меню групп что делает [Ctrl-R]? (комбинация указана среди подсказок внизу)
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

NightRoman wrote:1. Можно ли при задании групп использовать группы? (могу и попробовать, но ответ и другим будет полезен)
Нельзя. Могу и добавить (уже просили), но что если ты там рекурсию организуешь?
2. В меню групп что делает [Ctrl-R]? (комбинация указана среди подсказок внизу)
Что быстрее - нажать и посмотреть или на форум написать?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

но что если ты там рекурсию организуешь?
С этим можно справиться разными способами. Могут быть причины, почему это не хочется делать, это да. Но что возможна рекурсия - это не причина, как таковая. (для примера - хард линками тоже можно рекурсию организовать, но Фар ведь не запрещает их создавать)
Что быстрее - нажать и посмотреть или на форум написать?
Странный вопрос. А если это Remove или еще чего, что я не хочу делать? F1 там не работает.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

NightRoman wrote:[(для примера - хард линками тоже можно рекурсию организовать, но Фар ведь не запрещает их создавать)
как?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Принципиально или нет, я juntion имел в виду. Делается просто. Имеем любую папку (C:\TEMP\1). Идем в C:\TEMP\1 на левой панели, а с правой стоим на C:\TEMP\1 и создаем линк C:\TEMP\1\1 (AltF6). Теперь можно бесконечно входить внутрь C:\TEMP\1\1\1\1\1\...
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

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

Post by Tim Sobolev »

Была идея о назначении каждой простой группе уникального идентификатора, а сложной группе множества внешних идентификаторов, составляющегося из идентификаторов её простых групп. При включении сложной группы в другую группу наследуется это множество и собственный идентификатор включаемой группы. При создании/изменении сложной группы (без превращения в простую)/превращении простой группы в сложную происходит проверка, соответствует ли один из образующих внешних идентификаторов идентификатору самой группы. Да -- рекурсия. Также после этого происходит проверка всех сложных групп, включающих собственный идентификатор этой группы.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

NightRoman wrote:можно бесконечно входить внутрь C:\TEMP\1\1\1\1\1\...
По папкам ты ходишь сам, медленно, и рано или поздно либо осознаешь бессмысленность этих походов, либо упрешься в ограничение в 32768 символов.

Здесь же фар будет молча и с дикой скоростью наращивать строку, ограниченную только размером адресного пространства, поэтому проблема актуальна.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

можно просто ограничить глубину вложенности (скажем до 5 уровней), если больше, считать маску невалидной.
upd: - точнее возвращать ошибку при применении маски, в момент создания она вполне могла быть нерекурсивной...
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

DrKnS wrote:По папкам ты ходишь сам, медленно, и рано или поздно либо осознаешь бессмысленность этих походов, либо упрешься в ограничение в 32768 символов.
А если поиск? А если какая утилита не ожидает такой подлянки для рекурсивного прохода по папкам? Нет, это все равно капкан.

Да при чем тут это? Рекурсию можно отследить, хоть список составлять и проверять, чтобы туда дважды одна группа не попадала. При встрече группы либо давать полный отлуп, либо ее игноривать. Первое - лучше, пусть юзер устранит у себя эту рекурсию.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

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

Post by Denis »

Вроде же как несложно отследить рекурсию - если эта группа уже один раз была - выдавать ошибку.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

NightRoman wrote:Принципиально или нет, я juntion имел в виду. Делается просто. Имеем любую папку (C:\TEMP\1). Идем в C:\TEMP\1 на левой панели, а с правой стоим на C:\TEMP\1 и создаем линк C:\TEMP\1\1 (AltF6). Теперь можно бесконечно входить внутрь C:\TEMP\1\1\1\1\1\...
это не хард-линки.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

DrKnS wrote:Здесь же фар будет молча и с дикой скоростью наращивать строку
Известны эффективные алгоритмы для проверки ацикличности направленного графа. Разве этого недостаточно?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Code: Select all

drkns 04.03.2012 14:08:07 +0200 - build 2517

1. Продолжение 2488 - группы могут содержать другие группы.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

В общем ту такое дело, пытаюсь поправить хельп в части "@MaskGroupsSettings"
Мне сначала непонятна была цель F7 в списке групп масок, ведь есть Ctr-Alt-F в списке. Но потом вспомнил про "группы в группе".
Вроде всё ок, но фигня вот какая:
1. Ищется только точное совпадение. Не айс: "rar" вместо "*.rar" вроде как более юзерфриндли.
2. Как найти "*.h[ay]p"?

Далее (собственно подтверждения ради)
Создал группу <docums>=/\.doc[x]?$/i
Ctrl-I в панелях, добавил и отметил <docums>, на панели *.doc и *.docx. Ok.
Иду в группы правлю <docums>=/\.doc$/i
Ожидаю что фильтр применился. Неа, на панели тот же набор *.doc и *.docx
...перезапуск Far помогает.
We are the Borg. You will be assimilated.
So Say We All!
Post Reply

Return to “Development”