![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
kovalenko123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
Всем привет я понимаю что тема уже стара как мир но обнаружился какой то странный косяк в сортирвке listview
при закидывании записей в listview (через DragADrop) записи естественно не упорядочиваются при нажитии на header в LV записи сортируються (не без помощи функций конечно) но получаеться совсем не то что нужно (а нужно сортировка по возврастанию) вот пример ![]() Это уже после сортировки а по идеи должна быть от 2 до 17 подскажите пожалуйста что можно сделать |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
kovalenko123, у тебя происходит сортировка строк по убыванию.
Символ '9' больше чем символа '1'. Тебе видимо придется писать функцию сортировки, которая из каждой строки вынимает это число, и сортировать по числовому представлению, а не строчному. |
|||
|
||||
kovalenko123 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
THandle
так тогда бы начиналось бы все с 17 (17 , 16 , 15 и т д ) а тут с 9-2 потом начинаеться 17 ![]()
Откровенно говоря не совсем понял это высказывание |
||||
|
|||||
THandle |
|
||||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Нет. Так бы было если бы сортировал числа, а не строки. Тут же сортировка идет по коду символа. То есть Ord('9') > Ord('1'). Чтобы получить нужный тебе результат, тебе в коде функции сортировки надо сравнивать не строчки LV, а вынутые из этих строк числа(1...17). Напиши для этого "вынимания" функцию типа:
В параметр AStr передавай каждую строчку из столбца "Название". В результате должно возвращаться число из скобочек. Вот эти числа и нужно сравнивать в сортировке, когда переставляешь элементы. Попробуй сам это сделать. Если не получится - дай свою функцию сортировки, попробуем её изменить вместе. ![]() |
||||
|
|||||
kovalenko123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
Дело в том что если я сделаю как вы предложили
то в случае другого примере она может не сработать Иногда моя работает правильно. я тут одну ссылочку отыскал может она пригодиться Тынц там общие принцпиы сортировки может и для моего тяжелого случая подойдет |
|||
|
||||
amsoft |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 17.10.2009 Где: KZ, Astana Репутация: 3 Всего: 4 |
kovalenko123,
для затравки: в строках ищи положение символов '[' и ']' с помощью функции Pos и исходя из их значений выдергивай строку между ними через Copy, преобразовывай в число и сравнивай ![]() --------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин |
|||
|
||||
kovalenko123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
amsoft
а если их не будет этих символов? ![]() |
|||
|
||||
amsoft |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 17.10.2009 Где: KZ, Astana Репутация: 3 Всего: 4 |
kovalenko123,
как я вижу по примеру они есть ![]() --------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин |
|||
|
||||
kovalenko123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
amsoft
Это был просто пример я щас могу таких пример с десяток наскринить щас попробую реализовать то что предложил THandle
Вот функция для сортировки Это сообщение отредактировал(а) kovalenko123 - 12.12.2009, 16:34 |
|||
|
||||
amsoft |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 17.10.2009 Где: KZ, Astana Репутация: 3 Всего: 4 |
тогда сравнивай по каждому символу, если символ - цифра, то сравнивай число, если нет - сравнивай код символа
--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин |
|||
|
||||
kovalenko123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
amsoft
А можно какой нить кодовый пример на эту тему? |
|||
|
||||
amsoft |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 17.10.2009 Где: KZ, Astana Репутация: 3 Всего: 4 |
1. (на всякий случай) код символа определяется по функции Ord()
2. Вопрос: у тебя наименования имеют один формат: abcd1234 abcd1234 ... или же в некоторых случаях кол-во букв перед цифрами разное: abcd1234 abc1234 a1234 ... ? --------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин |
|||
|
||||
kovalenko123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
amsoft
К сожалению определенного правила формата нету так что может быть и как в 1 случае так и во втором но точно могу сказать что одна цифра будет например abcd1.pdf abcd2.pdf abcd3.pdf либо все доки будут начинаться с цифры например 1abcd.pdf 2abcd.pdf 3abcd.pdf |
|||
|
||||
amsoft |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 17.10.2009 Где: KZ, Astana Репутация: 3 Всего: 4 |
ЗЫ Здесь я сравниваю только Caption, если надо по другим столбцам, то можешь подкорректировать в самом начале. ЗЗЫ Сортировка идет по возрастанию --------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин |
|||
|
||||
kovalenko123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: 1 Всего: 1 |
amsoft и THandle Спасибо Вам с задачей справился следующим образом
результат в принципе устраевает тока вот с 10 все равно проблемы а со всем остальным нормально но ниче DAD подвинет куда надо будет эту 10 ![]() Успехов ВАМ! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |