Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо