Вверх ↑
Этот топик читают: Гость
Ответов: 824
Рейтинг: 138
#46: 2016-03-30 15:54:06 ЛС | профиль | цитата
Выше я.
карма: 1

0
Ответов: 9906
Рейтинг: 351
#47: 2016-03-31 06:02:46 ЛС | профиль | цитата
nesco писал(а):
... вот, кстати, метод, который из строки делает список
#pas
FWorkExt.SetText(LowerCase(ReadString(_Data,_data_Ext,_prop_Ext)), false);
Тут, кстати говоря, есть небольшая заморочка с Дельфячим LowerCase (их таких два в коде).
Он некорректно работает с русскими буквами. Точнее - вообще не знает про них.
Корректно работает Виндячий. Но он может попортить не только то, чего ты хочешь... Но и не понять какой оригинал строки.

Стоит возиться, или нет
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#48: 2016-03-31 10:04:46 ЛС | профиль | цитата
А зачем возиться - изменить обе на AnsiLowerCase. Даже с "Ё" никаких проблем.
#pas
FWorkExt.SetText(AnsiLowerCase(ReadString(_Data,_data_Ext,_prop_Ext)), false);
Tad писал(а):
Из каталога в котором подкаталогов 1271 и файлов 23283 отобрало 150 файлов за 930 ms
С AnsiLowerCase из каталога в котором подкаталогов 1271 и файлов 23283 отобрало 150 файлов за 750 ms
Почему отрабатывает быстрее, чем с LowerCase - непонятно.

Для прикола запустил с AnsiLowerCase на компе внука с ивритским Windows
Каталогов 38552, файлов 362105. Отобрало файлов 1673 (по расширениям на моей картинке выше) за 16250 ms
Там есть названия на иврите, арабском, русском и английском.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26149
Рейтинг: 2127
#49: 2016-03-31 10:37:12 ЛС | профиль | цитата
Galkov писал(а):
Он некорректно работает с русскими буквами

А что, бывают расширения на кириллице, вот уж никогда не встречал
карма: 22

1
Голосовали:Tad
Ответов: 16884
Рейтинг: 1239
#50: 2016-03-31 10:53:21 ЛС | профиль | цитата
Тоже верно.
P.S. http://delphiworld.narod.ru/base/kol_lesson12.html
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 2059
Рейтинг: 132
#51: 2016-03-31 17:26:04 ЛС | профиль | цитата
nesco писал(а):
А что, бывают расширения на кириллице, вот уж никогда не встречал

*Головачев*
*Golovachev*
*Головачёв*
*Golovachyov*
А расширение любое.

карма: 6

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#52: 2016-03-31 18:43:38 ЛС | профиль | цитата
flint2, это вообще-то не расширение файла, а его имя. Но согласен, что в маске могут присутствовать кириллические символы, если надо найти по части имени. Но вот тут всплывает недочет основного автора компонента, тк свойство обозначено как именно расширение

Ext=Расширение искомых файлов по умолчанию (маска аналогична маске элемента StrMask)|2|*
а то, что код ищет вообще все подряд по маске, так это получается уже недокументированная фича. Кстати, которая вполне может быть аннулирована авторами и приведена в соответствие со свойством, вне зависимости от стенания пользователей.
Вот если бы это свойство изначально называлось Mask -- маска поиска файлов, то никаких разночтений не возникало бы.
карма: 22

0
Ответов: 2059
Рейтинг: 132
#53: 2016-03-31 19:43:06 ЛС | профиль | цитата
это вообще-то не расширение файла, а его имя.

Тык я об чём. Не расширением единым.

уже недокументированная фича.

Формально -Да, по сути нет.
Вот если бы это свойство изначально называлось Mask

По коду и так понятно. Зовите меня просто - Mask
карма: 6

0
Ответов: 9906
Рейтинг: 351
#54: 2016-04-01 05:40:52 ЛС | профиль | цитата
Поправка: LowerCase -- это KOL-овская фишка (а не Дельфячая)
В общем, если делать "по правильному", то будет примерно так: (см аттач)

Смотрите, думайте: стоит оно того, или нет ...
карма: 9

0
файлы: 1hifilesearch_lc.rar [1.8KB] [316]
Разработчик
Ответов: 26149
Рейтинг: 2127
#55: 2016-04-01 10:01:00 ЛС | профиль | цитата
Galkov писал(а):
Смотрите, думайте: стоит оно того, или нет ...

А че вторую функцию LowerCase убрал, она что, не нужна? Те cFileName уже приведен к нижнему регистру, получается?

карма: 22

0
Ответов: 2059
Рейтинг: 132
#56: 2016-04-01 12:11:09 ЛС | профиль | цитата
Работает шустро.
Но было бы правильно при _prop_Include = Dirs и All директории тоже фильтровались, а не выводились все подряд.
И только при _prop_Ext (и Ext) = '*' выводились все подряд.
Очень часто надо найти папку и приходится городить огород.
+ Нужна точка для внешнего задания значений _prop_Include.
Это лучше, чем дублировать компонент в схеме с другим значением.
карма: 6

0
Ответов: 9906
Рейтинг: 351
#57: 2016-04-01 14:28:12 ЛС | профиль | цитата
nesco писал(а):
А че вторую функцию LowerCase убрал, она что, не нужна?

Не убирал.
А запихнул внутрь multiCmp эти пляски с бубном
------------ Дoбавленo в 14.28:
flint2 писал(а):
Но было бы правильно при _prop_Include = Dirs и All директории тоже фильтровались

В общем-то -- ДА.
Но это нарушение обратной совместимости. Хотя, и ничего сложного:
if (_prop_Include > 0) and multiCmp(FindData.cFileName) then OutFiles(Dir,FindData.cFileName);

карма: 9

0
Ответов: 2059
Рейтинг: 132
#58: 2016-04-01 14:45:02 ЛС | профиль | цитата
Galkov, а мне кажется, что при '*' по умолчанию совместимость полная, или мне кажется?
А ещё одна точка "Include" на совместимость вообще не влияет.
карма: 6

0
Ответов: 16884
Рейтинг: 1239
#59: 2016-04-01 14:46:18 ЛС | профиль | цитата
А если нужно отдельно найти файлы с расширением *.TXT, *.txt, *.Txt, *.tXt, *.txT
Т.Е. с учетом регистра.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 2059
Рейтинг: 132
#60: 2016-04-01 14:50:58 ЛС | профиль | цитата
Tad, С расширением не тот случай, когда лучше перебдеть, чем недобдеть.
Регистр расширения никак не может быть препятствием в взаимоотношениях.
карма: 6

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)