| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Сортировка ListView |
| Автор: kovalenko123 12.12.2009, 11:18 |
| Всем привет я понимаю что тема уже стара как мир но обнаружился какой то странный косяк в сортирвке listview при закидывании записей в listview (через DragADrop) записи естественно не упорядочиваются при нажитии на header в LV записи сортируються (не без помощи функций конечно) но получаеться совсем не то что нужно (а нужно сортировка по возврастанию) вот пример ![]() Это уже после сортировки а по идеи должна быть от 2 до 17 подскажите пожалуйста что можно сделать |
| Автор: THandle 12.12.2009, 11:52 |
| kovalenko123, у тебя происходит сортировка строк по убыванию. Символ '9' больше чем символа '1'. Тебе видимо придется писать функцию сортировки, которая из каждой строки вынимает это число, и сортировать по числовому представлению, а не строчному. |
| Автор: kovalenko123 12.12.2009, 14:32 | ||||
THandle
так тогда бы начиналось бы все с 17 (17 , 16 , 15 и т д ) а тут с 9-2 потом начинаеться 17
Откровенно говоря не совсем понял это высказывание |
| Автор: kovalenko123 12.12.2009, 15:58 | ||
Дело в том что если я сделаю как вы предложили
то в случае другого примере она может не сработать Иногда моя работает правильно. я тут одну ссылочку отыскал может она пригодиться http://articles.org.ru/docum/sort.php там общие принцпиы сортировки может и для моего тяжелого случая подойдет |
| Автор: amsoft 12.12.2009, 16:04 |
| kovalenko123, для затравки: в строках ищи положение символов '[' и ']' с помощью функции Pos и исходя из их значений выдергивай строку между ними через Copy, преобразовывай в число и сравнивай |
| Автор: kovalenko123 12.12.2009, 16:12 |
| amsoft а если их не будет этих символов? |
| Автор: amsoft 12.12.2009, 16:15 |
| kovalenko123, как я вижу по примеру они есть |
| Автор: kovalenko123 12.12.2009, 16:27 | ||
| amsoft Это был просто пример я щас могу таких пример с десяток наскринить щас попробую реализовать то что предложил THandle
Вот функция для сортировки |
| Автор: amsoft 12.12.2009, 16:38 |
| тогда сравнивай по каждому символу, если символ - цифра, то сравнивай число, если нет - сравнивай код символа |
| Автор: kovalenko123 12.12.2009, 17:08 |
| amsoft А можно какой нить кодовый пример на эту тему? |
| Автор: amsoft 12.12.2009, 18:02 |
| 1. (на всякий случай) код символа определяется по функции Ord() 2. Вопрос: у тебя наименования имеют один формат: abcd1234 abcd1234 ... или же в некоторых случаях кол-во букв перед цифрами разное: abcd1234 abc1234 a1234 ... ? |
| Автор: kovalenko123 13.12.2009, 07:32 |
| amsoft К сожалению определенного правила формата нету так что может быть и как в 1 случае так и во втором но точно могу сказать что одна цифра будет например abcd1.pdf abcd2.pdf abcd3.pdf либо все доки будут начинаться с цифры например 1abcd.pdf 2abcd.pdf 3abcd.pdf |
| Автор: amsoft 13.12.2009, 07:34 | ||
ЗЫ Здесь я сравниваю только Caption, если надо по другим столбцам, то можешь подкорректировать в самом начале. ЗЗЫ Сортировка идет по возрастанию |
| Автор: kovalenko123 13.12.2009, 11:13 | ||
amsoft и THandle Спасибо Вам с задачей справился следующим образом
результат в принципе устраевает тока вот с 10 все равно проблемы а со всем остальным нормально но ниче DAD подвинет куда надо будет эту 10 Успехов ВАМ! |
| Автор: kovalenko123 14.12.2009, 18:00 |
| блин ребята, седня еще раз проверил нифига она не работает как надо там косяк если есть строк с номерками больше 9 десятка идет после 1 (( что можно сделать? |
| Автор: amsoft 14.12.2009, 19:12 |
| kovalenko123, я же написал процедуру по сортировке 2 поста назад |
| Автор: kovalenko123 15.12.2009, 05:51 |
| amsoft так она не работает |
| Автор: amsoft 15.12.2009, 06:49 | ||
| kovalenko123, у меня все работает Чтобы убедиться в работоспособности кода, закинь его в событие ListView1Compare Создай кнопку и повесь код на OnClick:
Все сортирует как надо |
| Автор: amsoft 15.12.2009, 07:11 |
вот результат:![]() |
| Автор: kovalenko123 15.12.2009, 07:45 |
| amsoft буду в Астане с меня пиво |
| Автор: amsoft 15.12.2009, 07:58 |
| kovalenko123, договорились |