![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование generics для реализации двойной сортировки [D7, WinXP]
VLK32 © (2011-01-13 17:04:00)Привет всем!
Сейчас решил освоить шаблоны. Смотрю модули Generics.Collections и Generics.Defaults. Неплохой пример как использовать эту кухню. Все замечательно, но я сразу задумываюсь наперед. Надо будет сортировать списки записей (или объектов) у которых есть куча полей. И может понадобиться сортировка по двум полям (или более полям). Должна быть возможность задать поля для сортировки и их приоритет.
Как вариант можно объявить функцию сортировки со списком полей для сортировки. Но почему то эта идея мне не очень нравится. Получается как то громоздко. Поля придется передавать или в виде имен (строки) или в виде индексов. В одном случае будет наглядно, но медленно в другом все наоборот.
Кто-нибудь может подсказать известные решения такой задачи? Чтобы работало быстро и желательно код выглядел бы логично и понятно.
Юрий Зотов (2011-01-16 18:00:00) [1]> Поля придется передавать или в виде имен (строки) или в виде индексов.
> В одном случае будет наглядно, но медленно в другом все наоборот.
Может быть, подойдут именованные константы?
_Юрий (2011-01-14 21:43:00) [2]Ну да, не в седьмой версии конечно же
_Юрий (2011-01-14 21:42:00) [3]
> Конкретнее не могу ничего сказать, так как понятия не имею,
> что это за дженерики такие в Дельфи7.
Практические такие же, как в сишарпе
DiamondShark (2011-01-13 18:26:00) [4]Вариант первый.
Контейнеры используют экземпляр объекта-компаратора, который знает, как надо сравнивать экземпляры хранимых объектов.
Вариант второй.
Сами экземпляры реализуют интерфейс-компаратор, и умеют сравнивать сами себя со своими сородичами. Контейнер использует интерфейс хранимых объектов.
Конкретнее не могу ничего сказать, так как понятия не имею, что это за дженерики такие в Дельфи7.