Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2018, 21:24   #1
Seikeron
Новичок
Джуниор
 
Регистрация: 24.10.2017
Сообщений: 2
По умолчанию Вывод в ListView каталогов по заданному критерию (TDirectory, TPath) проблема с кириллицей

Здравствуйте.
Создаю программу, которая выводит в ListView директории по введённому в Searchbox критерию:

Код:
procedure TForm6.SearchBox1InvokeSearch(Sender: TObject);
var
  s:string;
  LW: TListItem;
begin
  ListView1.Items.Clear;
  for s in TDirectory.GetDirectories('D:\Тест\', '*' + SearchBox1.Text + '*') do
  begin
    LW := ListView1.Items.Add;
    LW.Caption := s;
  end;
end;
В папке "Тест" лежат 5 папок с разными названиями типа "Новая пАпКА (1)", "ноВАя пАпкА (2)", "повая папКА (3)", "овая пап (4)","Нов папк (5)" (все названия кириллицей).

Проблема в том, что поиск происходит только в том случае, если в seachbox записан критерий с точным соответствием регистру букв, то есть, если ввести "новая папка (1)" результат будет нулевым.

Как побороть данную проблему?
Seikeron вне форума Ответить с цитированием
Старый 26.03.2018, 05:55   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Приводить искомый текст к общему виду (LowerCase/UpperCase)
Shouldercannon вне форума Ответить с цитированием
Старый 26.03.2018, 09:31   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Seikeron Посмотреть сообщение
о есть, если ввести "новая папка (1)" результат будет нулевым.
а если ввести слово "новая" - какой будет результат?
вообще, я первый раз слышу о том, что поиск по маске может быть регистрозависимым!
Скорее всего проблема в преобразовании кириллицы из уникода в ansi при вызове системной функции Windows API.

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Приводить искомый текст к общему виду (LowerCase/UpperCase)
Скорее всего это не поможет.
Точнее поможет, но надо либо использовать олдскульный FindFirst/FindNext, либо GetDirectories с маской *.*
и потом в цикле сравнивать с требуемым шаблоном.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.04.2018, 22:20   #4
Seikeron
Новичок
Джуниор
 
Регистрация: 24.10.2017
Сообщений: 2
По умолчанию

Извиняюсь за долгий ответ.
Цитата:
а если ввести слово "новая" - какой будет результат?
Результат будет так же нулевым. Я разные варианты пробовал, если вводить "овая" ищет, но "новая" нет. С латиницей всё нормально, пробовал искать папки - ест любые.

Вообще по правде говоря, придя на работу и попробовав свой код по поиску... был удивлен насколько это долго, около минуты, что неприемлемо.
В итоге
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
олдскульный FindFirst/FindNext
решил все проблемы, и регистр ему безразличен, и скорость потрясающая.

Последний раз редактировалось Seikeron; 02.04.2018 в 22:24.
Seikeron вне форума Ответить с цитированием
Старый 03.04.2018, 01:27   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,867
По умолчанию

Цитата:
Сообщение от Seikeron Посмотреть сообщение
В итоге
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
олдскульный FindFirst/FindNext
решил все проблемы, и регистр ему безразличен, и скорость потрясающая.
5 с плюсом разработчикам Турбо Паскаля и жирная тройка с минусом разработчикам Дельфи ХЕ
northener на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все уникальные значения по заданному критерию Aswerd Microsoft Office Excel 2 24.08.2015 23:01
сумма по заданному критерию Iskin Microsoft Office Excel 4 16.08.2013 21:32
Как найти нужное число в таблице по заданному критерию Svist Microsoft Office Excel 2 01.07.2011 23:40
сумма по заданному критерию Iskin Microsoft Office Excel 6 18.08.2009 09:00
Опять про скрытие строк по заданному критерию aval Microsoft Office Excel 4 30.06.2009 12:39