![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как реализовать сортировку по приоритетам?
@!!ex © (2009-05-19 21:50:00)Есть массив структур с полями Name, Map, Id, Locked, TTL.
Нужно сделать сортировку по приоритетам.
Тоесть пользователь кликает на Name, список сортируется по Name, после чего кликает на Locked, список сортируется с учетом Locked, но там где Locked равный сотрируется уже по имени.
Как такое проще всего реализовать? Может есть примеры?
sniknik (2009-05-20 16:48:00) [1]> а об подготовке к их выполнению.
не намного медленнее или неудобнее чем заполнение того же массива рекордов. а уж если данные нужно сохранять/загружать так и наоборот намного удобнее/быстрее.
но вообще разговор ни о чем, автор топика уже отказался от этого варианта.
antonn (2009-05-20 16:20:00) [2]
> так называемые костыли это профессиональные компоненты по
> обработке данных, вряд ли он, или ты (да и вообще, подавляющее
> большинство здесь) напишет быстрее.
речь не о выполняемых ими функциях, а об подготовке к их выполнению.
@!!ex (2009-05-20 15:31:00) [3]> [25] DVM © (20.05.09 15:14)
Да.
DVM (2009-05-20 15:14:00) [4]
> @!!ex © (20.05.09 15:10) [23]
Я понял что ты сортируешь! Сервера вероятно игровые!
sniknik (2009-05-20 15:14:00) [5]> Использование СУБд здесь не актуально и никогда не будет. Нет смысла.
СУБд никто и не предлагал, предлагали компонент для данных... дели мух и котлеты.
но в общем то колхоз дело добровольное.
@!!ex (2009-05-20 15:10:00) [6]Господа, вы не о том спорите.
Использование СУБд здесь не актуально и никогда не будет. Нет смысла.
Проигрыш из-за скорости на <100 элементах не актуален, а на 100+ в любом случае архитектуру переделывать, чтобы пользователь не путался.
sniknik (2009-05-20 15:05:00) [7]> Достаточно midas.dll или вообще без нее
ага. я предпочитаю ADODataSet.
> то всякие косыли с субд и "сетами" идут лесом.
так называемые костыли это профессиональные компоненты по обработке данных, вряд ли он, или ты (да и вообще, подавляющее большинство здесь) напишет быстрее.
серьезно, уже были желающие "померятся", и мерялись с компонентом написанным здесь товарищем уровня мастера, т.е. очень хорошим и быстрым (он на это и ориентировался) и по большинству параметров он проиграл... нет, собственно сама сортировка у него была очень быстрая, чуть ли не в 2-3раза по числовому полю, но повторная по тому же полу у него занимала то же время, а время датасета за счет построенного в первый раз индекса стремилась к 0, + не было фильтров, и т.д. ну в общем "по очкам" он проиграл.
у вас же, гарантирую, не будет даже одного преимущества.
Вариант (2009-05-20 14:54:00) [8]
> antonn © (20.05.09 14:38) [20]
Я конечно не скажу, что вариант с применением TRxMemoryData будет оптимальным и самым быстродействующим, но тем не менее для сортировки он использует QuickSort, что вовсе не так уже и плохо.
antonn (2009-05-20 14:38:00) [9]а если ему нужна максимальное быстродействие в его задаче - то всякие косыли с субд и "сетами" идут лесом.
sniknik (2009-05-20 14:10:00) [10]> отличная идея. :) таскать с приложением в 100 килобайт еще и СУБД для массива из 10 записей...
100 килобайт несущественны, СУБД необязательна, 10 записей все и так "на виду" сортировать не нужно.
Вариант (2009-05-20 14:09:00) [11]
> @!!ex © (20.05.09 13:43) [17]
> отличная идея. :) таскать с приложением в 100 килобайт еще
> и СУБД для массива из 10 записей...
Зачем СУБД, есть другие варианты. Достаточно midas.dll или вообще без нее, если подключить RxLib -> TRxMemoryData (или любую другую библиотеку с "отсоединенным" датасетом) к проекту - это если есть желание воспользоваться готовым и не изобретать велосипед.
PS:Правда считаю, что время от времени "изобретение велосипедов" необходимо, для понимания тех или иных вещей.
@!!ex (2009-05-20 13:43:00) [12]
> [15] sniknik © (20.05.09 10:45)
> + в том, что там готовые методы по обработке данных, в том
> числе и фильтр с сортировкой, что тут как раз и пытаются
> совместить.
отличная идея. :) таскать с приложением в 100 килобайт еще и СУБД для массива из 10 записей...
> [16] Плохиш © (20.05.09 10:59)
Реализация выше, если вы не обратили внимание. Просто не хотелось изобретать велосипед.
Плохиш (2009-05-20 10:59:00) [13]
> Нужно сделать сортировку по приоритетам.
> Тоесть пользователь кликает на Name, список сортируется
> по Name, после чего кликает на Locked, список сортируется
> с учетом Locked, но там где Locked равный сотрируется уже
> по имени.
Я вот, честно, не понял. В чём проблема? В отсутствии программиста?
sniknik (2009-05-20 10:45:00) [14]почему нет? ничуть не сложнее чем создать
> массив структур с полями Name, Map, Id, Locked, TTL.
+ в том, что там готовые методы по обработке данных, в том числе и фильтр с сортировкой, что тут как раз и пытаются совместить.
DVM (2009-05-20 10:42:00) [15]
> Palladin ©
Погоди, щас еще фанатики XML набегут.
Palladin (2009-05-20 10:40:00) [16]
> sniknik © (20.05.09 10:26) [12]
предлагаешь ради сортировки 10 record'ов составом в 4 поля содавать рекордсет? :)
sniknik (2009-05-20 10:26:00) [17]да научись уже работать с базами, или частный случай хотя бы с рекордсетом...
@!!ex (2009-05-20 09:34:00) [18]еще в пузырьке j:=i, а не j:=0
@!!ex (2009-05-20 09:33:00) [19]> [9] Palladin © (20.05.09 08:46)
Согласен. Развернутый для прозрачности теста сделал.
Palladin (2009-05-20 08:46:00) [20]
> function TMainForm.CompareItem(id1,id2:integer):integer;
For i:=0 to Length(Compare_Priority)-1 Do
Begin
Result:=CompareItemByPriority(Compare_Priority[i],id1,id2);
If Not Result Then Break;
End;