|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.07.2009, 15:29 | #1 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Сортировка файлов в Explorer vs сортировка в Delphi
Всем привет!
Столкнулся с такой проблемкой, необходимо добиться такой же сортировки как и в Проводнике, но там как-то интересно он сортирует, числа содержащиеся в именах он сортирует как числа (нули вначале не учитывает), если они к тому же разделены то он их еще и по этому признаку отдельно сортирует, подчеркивание у него меньше чем число. Если сортировать в Дельфи как строки, то совсем другой результат выходит. Может кто уже реализовывал такое и есть алгоритм? (а то не хочется все грабли собирать и изобретать велосипед).
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
01.07.2009, 15:48 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я считаю такую сортировку корявой, но когда-то предлагал разбивать строку на блоки-поля, в которых по порядку содержатся строки и числа, все это в БД, и БД сортировать, а потом полученное из полей опять в строки...
I'm learning to live...
|
01.07.2009, 16:18 | #3 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
ну так тебе всего- то один компаратор написать, если алгоритм понятен )
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
01.07.2009, 17:06 | #4 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
БД заводить специально не хочется для этого )
Да как сказать понятен или не понятен, нужно проанализировать еще, как он сортирует, корявая однозначно, мне как пользователю тоже не нравится такая, она противоречит ходу моих мыслей ) А вообще меня интересует в принципе в продуктах Микрософт сортировка файлов, нежели конкретно в проводнике. То есть какое имя они поставят выше а какое ниже. Я думаю что идеология та же что и в проводнике по идее и в других продуктах?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
01.07.2009, 17:09 | #5 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
По идее да (но не забываем, что идея и Microsoft понятия тяжело совместимые) А msdn на эту тему молчит ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
01.07.2009, 17:12 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Тут еще такое мнение - проводник может пользоваться индексацией... Можете меня помидорами закидать. но думаю что всетки там БД учавствует...
I'm learning to live...
|
|
04.09.2009, 05:39 | #7 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Вобщем реализую сейчас эту сортировку. Задача оказалась весьма нетривиальной. Граблей немерено
Функция уже > 150 строк и с исправлением каждого бага разбухает еще на десяток другой. Очень интересно было бы посмотреть на родную реализацию этой фигни от Майкрософта. Может все таки есть какая-то функция в ВинАпи к-рая может сравнить две строки как имена файлов? (или даже список отсортировать) Пока делаю так: разбиваю строку на подстроки, подстроки-числа сравниваю как числа, остальные символы по их кодам, особенно непонятки с числами с содержанием нулей в начале и еще дефис, дефис это вообще чудеса, он вроде как и не учитывается, но в тоже время в нек-рых случаях еще как учитывается, и поди разберись как именно. С числами например такая фигня: //в таком порядке их сортирует Проводник 003_493.jpg 03_493.jpg 3_00493.jpg 3_493.jpg Если из подстрок-чисел убрать нули в начале то получатся 4 одинаковые строки, значит надо запоминать где и сколько нулей убиралось, а это усложняет намного и так не маленький алгоритм. Дефис - отдельная история, к примеру есть два файла nightcity-1024.jpg night-dr-1600.jpg если заменить во втором файле букву после дефиса на меньшую чем 'c', то их порядок поменяется, т.е. тут дефис в сравнении не участвует, но это только тут, в других еще как участвует, особенно где дефисов больше чем букв )) Кстати именно эти два файла стандартный StringList.Sort тоже так расставляет. В архиве функция. Советы, предложения принимаются.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 04.09.2009 в 05:57. |
04.09.2009, 07:57 | #8 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
Попытался смоделировать ситуацию. Для сравнения пользовался функцией WideCompareText. Честно говоря разницы между тем, что выдает проводник и своей программой пока не заметил. Еще немного погоняю...
|
04.09.2009, 08:17 | #9 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
А может не резать строками, а сравнивать тогда regexp-ами ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
04.09.2009, 14:08 | #10 | ||
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Цитата:
Цитата:
На всякий случай поясню, проблема не в разделении строки на составляющие, это легко и уже сделано, проблема в чересчур хитром принципе сравнения. Особенно эти нули, они могут в корне поменять порядок, если окажется что в числовом виде (без нулей) имена равны.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 04.09.2009 в 14:30. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка слиянием файлов | [MI_nor] | Общие вопросы C/C++ | 1 | 01.06.2009 20:56 |
Сортировка файлов | Minus | Общие вопросы Delphi | 2 | 28.04.2009 12:49 |
Сортировка файлов | DonLena | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 19.04.2009 20:05 |
Сортировка файлов | russian-stalker | Общие вопросы Delphi | 4 | 25.09.2008 22:52 |