|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.08.2013, 18:03 | #1 |
Заблокирован
Регистрация: 17.07.2013
Сообщений: 104
|
Защита от попадания дубликатов в TThreadlist
Здравствуйте, товарищи! Имеется tthreadlist, в который заносятся объекты. Есть такой вопрос: как не допустить попадания дубликатов в tthreadlist? У этого объекта есть свойство Duplicates, выставлено в dupIgnore, но копии объектов все равно добавляются.
код полностью: Код:
Последний раз редактировалось Stertor; 03.08.2013 в 18:07. |
03.08.2013, 18:37 | #2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Stertor, TThreadList - список указателей и предназначен для хранения TThread. Для хранения объектов используйте TObjectList, там есть метод IndexOf который сравнивает объекты списка, наследуйте свой класс от его и перепишите методы на свой лад с контролем дубликатов.
Ещё вариант - TStringList - тоже список объектов. TStringList.AddObject('СТРОКА', Объект), и есть встроенный контроль дубликатов. |
04.08.2013, 00:04 | #3 | |
Новичок
Джуниор
Регистрация: 03.08.2013
Сообщений: 6
|
Цитата:
Опус выше попадет на мой любимый сайт, без обид))
Можно заблокировать тролля, но нельзя забанить троллинг, ибо это не причина, а следствие.
|
|
04.08.2013, 00:13 | #4 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
5 разных объектов добавляете. Троллинг, не надоело еще кучу акков заводить? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
04.08.2013, 00:18 | #5 | |
Новичок
Джуниор
Регистрация: 03.08.2013
Сообщений: 6
|
Цитата:
Насчет акков: меня вынудили это сделать. После каждого бана будет возрожденный Стертор, аки Феникс возрождается из пепла. Стертора нельзя забанить.
Можно заблокировать тролля, но нельзя забанить троллинг, ибо это не причина, а следствие.
|
|
04.08.2013, 00:24 | #6 | ||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Цитата:
Сортировка списка объектов довольно просто делается. У каждого списка есть метод Sort, где на входе указатель на процедуру TSortProc, в которой ты сам указываешь как нужно сравнивать 2 объекта. Цитата:
Последний раз редактировалось Человек_Борща; 04.08.2013 в 00:28. |
||
04.08.2013, 00:38 | #7 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
вариант один, это писать свой класс от списка и в нем переопределять Add и Insert(или что там еще за добавление отвечает, не помню) еще вариант разве что поиграть с перегрузкой операторов, но не факт что оно заработает с не-дженерик списком. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 04.08.2013 в 00:42. |
||
04.08.2013, 00:48 | #8 | ||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Цитата:
Цитата:
|
||
04.08.2013, 00:54 | #9 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
там может быть применен компарер стандартного TObject, то есть по адресу. генерик же должен будем применять именно наши операторы. но тебе виднее. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
04.08.2013, 01:12 | #10 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Перегрузка операторов работает так же как оператор is, т.е. если хоть 1 предок к древе класса совпадает, то вернётся true.
Путь у на есть список объектов TObject, а мы храним там объекты TMyObject(TObject)=>TMySuperObject( TMyOject), то базовые методы списка все равно будут использовать базовый тип TObject или вообще указатель или адрес этого объекта, как вы и сказали. А вообще, для сортировки существует метод Sort в котрый передается TCustomSortProc, где программист получает 2 указателя на объекты для сравнения, и сам указывает, что сравнивать. Если бы не работало, как же мы до 2009 делфи, без дженериков-то жили? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
TThreadList как им пользоваться? | bakanaev | Общие вопросы Delphi | 3 | 15.01.2013 00:23 |
Определить попадания точки в заштрихованную область | Ty4ka | Помощь студентам | 10 | 20.05.2012 21:35 |
Исследования попадания точки в заданную область | uHkBu3uTop | Помощь студентам | 2 | 19.01.2012 12:35 |
Бальная оценка в зависимости от попадания в интервал | Medlain | Microsoft Office Excel | 2 | 22.05.2010 22:17 |
поиск дубликатов файлов(имя, тип, размер). Вывод дубликатов на экран с отображением их пути | faraon1792 | Помощь студентам | 4 | 19.03.2010 23:46 |