Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сравнение имен файлов как в Explorer - чтобы '1' шел перед '100'


GrayFace ©   (2007-01-30 18:52:00) 

Хочу сделать обработчик OnDataFind в Shell'овском ListView с помощью бинарного поиска. Соответственно, нужно уметь сравнивать строки на больше-меньше.
Нашел сравнение двух PIDL'ов, но IShellFolder.ParseDisplayName возвращает PIDL только для существующих файлов.
Вы знаете, как это можно сделать?

P.S. Видимо, придется создать StringList, упорядочить его и искать через него. А потом еще искать наиболее подходящую строку среди удволетворяющих условию поиска.


GrayFace   (2007-02-02 12:19:00) [1]

Спасибо, не надо. Я уже сделел через StringList.


MBo   (2007-02-01 16:56:00) [2]

Я как-то видел ссылки на сишные реализации, но сейчас не нашел.


GrayFace   (2007-02-01 16:38:00) [3]

Прикинув, решил что и без THashedStringList скорость будет отличная.

MBo ©   (01.02.07 14:11) [4]
http://rsdn.ru/Forum/Message.aspx?mid=210313#210313

Интересно. Еще чуть-чуть и у Slicer'а был бы правильный алгоритм.


MBo   (2007-02-01 14:11:00) [4]

http://rsdn.ru/Forum/Message.aspx?mid=210313#210313


GrayFace   (2007-02-01 13:26:00) [5]

На счте FindFirstFile уже думал, но толку с этого не будет - потом все-равно его искать среди соих объектов-файлов. А THashedStringList - хороший совет, вероятно его буду использовать.

clickmaker ©   (31.01.07 18:03) [1]
а где связь между пидлами и именами 1 и 100?

Я хотел сравнивать имя файла с частью имени файла. Для PIDL-ов сравнение есть, соответственно два имени существующих файлов можно сравнить.


tesseract   (2007-01-31 21:39:00) [6]

> StringList,


THashedStringList гораздо более производителен. Использование  FindFirst ещё прибавит производительности.


clickmaker   (2007-01-31 18:03:00) [7]


> сравнение двух PIDL'ов, но IShellFolder.ParseDisplayName
> возвращает PIDL только для существующих файлов

а где связь между пидлами и именами 1 и 100?


Наверх

Титульная страница Поиск, карта сайта Написать письмо