![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Телепат с дипломом
Старожил
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Я считаю такую сортировку корявой, но когда-то предлагал разбивать строку на блоки-поля, в которых по порядку содержатся строки и числа, все это в БД, и БД сортировать, а потом полученное из полей опять в строки...
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
ну так тебе всего- то один компаратор написать, если алгоритм понятен )
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#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)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
По идее да (но не забываем, что идея и Microsoft понятия тяжело совместимые) А msdn на эту тему молчит ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Тут еще такое мнение - проводник может пользоваться индексацией... Можете меня помидорами закидать. но думаю что всетки там БД учавствует...
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#8 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
![]()
Попытался смоделировать ситуацию. Для сравнения пользовался функцией WideCompareText. Честно говоря разницы между тем, что выдает проводник и своей программой пока не заметил. Еще немного погоняю...
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
А может не резать строками, а сравнивать тогда regexp-ами ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#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 |