Второй пункт нелогичен совсем. Если выдаются только директории, то и на выходы, и на счетчик должны попасть только директории.
Для файлов -- то же самое, но директории попадать не должны.
Для всего -- и выходы, и счетчик должны срабатывать на все.
Этот топик читают: Гость
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
карма: 22 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Лебедь, рак и щука в одном аквариуме(квадратике) не размножаютcя!
1. Если Include=Files, то на onSearch выдаются файлы, прошедшие маску, с инкрементом счетчика. Точка. На onOtherFiles - только файлы не прошедшие маску (папки не выдаются). Может быть для поиска левых файлов? У совместимости больший козырь, а так... 2. Если Include=Dirs, то на onSearch выдаются только все найденные папки. Точка. Только инкрементируется счетчик - возможно. ? 3. Если Include=All, (сложный вопрос), то на onSearch выдаются все папки, и прошедшие маску файлы. Точка. Больше никаких телодвижений!!! 4. + точку = procedure _work_doInclude(var _Data:TData; Index:word); Квадратики не библиотеки... И не надо стремиться к универсальности в одной точке. Чем больше точек - тем лучше, но совместимость... Где чего прибавится, то в другом месте убудет - глобальный закон. |
|||
карма: 6 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Хех...
Слова они и есть слова Пока мне кажется, что вы склоняетесь к первому, изложенному мной ранее, варианту. Меня, в принципе, больше беспокоит нерациональность анализа всей толпы файлов, если ищешь просто Папку. Вот, смотрите коды (в аттаче). Они относительно просты. И, в отличие от слов - понимаются однозначно. |
|||
карма: 9 |
| ||
файлы: 1 | hifilesearch_new.rar [1.8KB] [298] |
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
flint2 писал(а): то на onSearch выдаются все папки, и прошедшие маску файлыВот тут я в корне не согласен. Сначала отбираем по Include, затем сверху накладываем маску, и без разницы -- файлы это или папки, все должно подвергаться отсеву на разные выходы. А вдруг мне понадобится найти только папку, удовлетворяющую маске, а мне на выход полезут все? |
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): А вдруг мне понадобится найти только папку, удовлетворяющую маске, а мне на выход полезут все?По моему, он именно этого и хотел. Находить папку по маске. Вот здесь flint2 писал(а): Но было бы правильно при _prop_Include = Dirs и All директории тоже фильтровалисьГоворю же: слова, они и есть слова |
|||
карма: 9 |
|
Ответов: 2059
Рейтинг: 132
|
|||
nesco писал(а): Вот тут я в корне не согласен. ...Согласен. А вдруг мне понадобится... Ерунда это всё, и всё ерунда! А вдруг мне понадобится... Соломку подстилать - пустое дело. Galkov писал(а): Пока мне кажется, что вы склоняетесь к первомуТак точно! Если понимать, что я написал выше. Но Карфаген должен быть разрушен! procedure THIFileSearch._work_doInclude; begin _prop_Include :=Tointeger(_Data); end; P.s. К теме не относится, но интересно. К слову - в Index:word (procedure _..._....(....; Index:word); места остались? Например для Include:byte, тра-та -та:поинт, ... все хотя бы стандартные. Или битовая маска? P.S. Galkov писал(а): flint2 писал(а) Но было бы правильно при _prop_Include = Dirs и All директории тоже фильтровались Говорю же: слова, они и есть слова Моя не понимать! Код что-ли нужен? Моя не понимать, почему бы не FileSearchEx? - и не каких напрягов. Старое лечить - только калечить. P.S. Тема называется - FileSearch не хочет искать больше одного расширения. Почему? Компонент - лиха беда начало. Почему только расширения по маске, а не папки и имена файлов и 'и'? Почему нельзя сделать ... внешние установки чего ищешь - по дате(маска) , маске(имени, оно же расширение и папка)? А сколько их там было верных и не верных файлов - это на любителя. Тема- новые компоненты FileSearchEx. |
|||
карма: 6 |
|
Ответов: 9906
Рейтинг: 351
|
|||
карма: 9 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
Galkov писал(а): так ты посмотрел этот функционалПосмотрел, но в подробности пока не вдавался. На данный момент голова другим занята. Да и куча народа у нас, неужели некому потестировать? |
|||
карма: 22 |
|
Ответов: 2059
Рейтинг: 132
|
|||
nesco писал(а): неужели некому потестировать?Всё замечательно! Только непонятно, как переключать Files, Dirs и All. Так удобнее http://forum.hiasm.net/forum_serv.php?q=56&id=4270 P.S. Если точка Ext имеет соединение, но строка пуста, программа падает. procedure THIFileSearchEx._work_doSearch; var Dr,Ex:String; begin Dr := ReadString(_Data,_data_Dir,_prop_Dir); Ex := ReadString(_Data,_data_Ext,_prop_Ext); if Ex = '' then Ex :='*'; // Можно добавить, или if Ex = '' then exit;. UniqueString(Ex); FWorkExt.SetText(CharLower(PChar(Ex)), false); ....... // if FWorkExt.Count = 0 then FWorkExt.Add('*'); // А это убрать. |
|||
карма: 6 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
flint2 писал(а): Если точка Ext имеет соединение, но строка пуста, программа падает.Galkov, а почему
Ведь последнее не вызывает падения |
|||
карма: 22 |
|
Ответов: 2059
Рейтинг: 132
|
|||
nesco писал(а): CharLower(@fn[1]); Ведь последнее не вызывает падения Тоже падает. |
|||
карма: 6 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
flint2 писал(а): Тоже падаетДа ладно, а у меня не падает. Давай схему, в которой он падает. Этот метод применен в StrCase. посмотри, он у тебя падает с пустой строкой? Да, а на каком компиляторе падает? |
|||
карма: 22 |
|
Ответов: 2059
Рейтинг: 132
|
|||
карма: 6 |
| ||
файлы: 2 | code_37136.txt [990B] [344], code_37137.txt [12.6KB] [853] |
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
А вот этот код падает
flint2 писал(а): С пустой строкой падает.У меня не падает. Ты обе строки поменял?
Я же просто пример привел, а не полные исправления кода |
|||
карма: 22 |
|
Ответов: 2059
Рейтинг: 132
|
|||
nesco писал(а): . Ты обе строки поменял?Каюсь - грешен. Всё работает. |
|||
карма: 6 |
|