Поиск правильного решения

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: Поиск правильного решения

Сообщение beria » 07.02.2017 09:21:22

igordz писал(а):Что посоветуете насчет сортировки?


Для начала сразу хранить дату в родном и нормальном универсальном человеческом вещественном формате TDateTime для которого есть кучи прекрасно работающих процедур и функций для чего угодно, в том числе и для приведения в текстовый вид и переконвертировать в строки только по надобности))) При этом одномоментно все проблемы снимаются.
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Поиск правильного решения

Сообщение vitaly_l » 07.02.2017 10:26:08

zub писал(а):Ждем тему про непонятный вылет при закрытии и забагованость canclose))

Это неинтересная тема, а вот про умную сортировку... Вот про эту:
zub писал(а):Овнердрав процедура отображает имя ноды на основе данных взятых по индексу\указателю в соответствии с настройками, процедура сортировки сортирует ноды на основе данных взятых по индексу\указателю на основе настройки способа сортировки. Настройки отображения\сортировки можно менять налету без пересоздания дерева.

Было бы интересно впитать информацию, из просвещённых умов.

Код: Выделить всё
TMyFileInfo=record
  Path,Name:String;
  CreateTime,ModifyTime:TDateTime;
  Attr:TMyFileAttr;
end;


Вот Ваш рекорд: :roll: Как по нему сортировать налету в treeview?

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Поиск правильного решения

Сообщение zub » 07.02.2017 12:59:05

yстанавливаешь обработчик события OnCompare
Код: Выделить всё
procedure TForm1._CompareItems(Sender: TObject; Node1, Node2: TTreeNode;var Compare: Integer);

в нем из Node1, Node2 восстанавливаешь привязаные к ним данные и сравниваешь как тебе надо, результат возвращаешь в var Compare: Integer
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Поиск правильного решения

Сообщение vitaly_l » 07.02.2017 13:26:52

zub писал(а):в нем из Node1, Node2 восстанавливаешь привязаные к ним данные и сравниваешь как тебе надо, результат возвращаешь в var Compare: Integer

Тюууу.... :cry: Это что же, сортировка - совсем без моторчика? :roll: Вот ведь: какие были изначально простые методы сортировки от художников, до тех пор пока не вмешались программисты... :wink: :mrgreen:

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Поиск правильного решения

Сообщение zub » 07.02.2017 13:37:46

Незнаю что там у тебя за моторчики... надо уметь только сравнивать ноды между собой. Вижу в этом только упрощения
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Поиск правильного решения

Сообщение vitaly_l » 07.02.2017 13:45:52

zub писал(а):Незнаю что там у тебя за моторчики... надо уметь только сравнивать ноды между собой. Вижу в этом только упрощения

:oops: Это был юмор: "без моторчика" - значит: ручками нужно, писать код, а с моторчиком, это значит, что сортировка уже сделана, до нас, разработчиками. Всё зависит от задачи. Лично мне сортировка - ненужна. А вот, ТС, не знаю. Если он привязывает файлы в дату, то конечно же Ваш метод 100% более правильный, а если не привязывает, то метод художников проще :roll: ИМХО (т.к. ничего мудрить ненужно).
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Поиск правильного решения

Сообщение zub » 07.02.2017 15:22:34

Какой метод?
Код: Выделить всё
  TreeView1.SortType:=stText;
  TreeView1.AlphaSort; 

если этот - то это то о чем я и говорю, только вместо нашего CompareItems используется встроеный, сравнивающий имена нод.

а если посортировать стринглист перед загрузкой в тривиев, то садись, 2!
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Поиск правильного решения

Сообщение vitaly_l » 07.02.2017 15:45:21

zub писал(а):то садись, 2!

О это хуже, если топик стартер, так решает учебные задачи, то всё зависит от квалификации учителя:
1) если учитель хороший (как я например), то он скажет: Молодец - отличное неординарное решение, но можно было отсортировать, вот так "TreeView1.AlphaSort;".
2)
А если учитель "злой и коварный" как Zub, то естественно он скажет "садись, 2", т.к. в алгоритме с использование стринг листа - это отступление от стандарта и поиск нестандартного решения. При этом, "злой и коварный" Zub не учитывает что, далеко не все компоненты умеют автоматически сортировать.

Но самое, главное, "злой и коварный" Zub, не заметил, что предложенную "злым и коварным" Zub-ом сортировку, художники, предлагали изначально, вот так: "TreeView1.Items.SortTopLevelNodes();" и заметь-те, "злой и коварный" Zub, что описание: procedure SortTopLevelNodes(SortProc: TTreeNodeCompare);, ведёт к вот такой развязке: TTreeNodeCompare = function(Node1, Node2: TTreeNode): integer of object;, в смысле, ненужно выдумывать вот это, TForm1._CompareItems, когда мудрые художники предложили систему заложенную в TreeView1. Так что, садитесь "злой и коварный" Zub Вам, по Вашей-же методике: 2 - за невнимательность!
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Поиск правильного решения

Сообщение zub » 07.02.2017 15:56:10

уговорил, пусть 3!
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Поиск правильного решения

Сообщение vitaly_l » 07.02.2017 15:59:05

zub писал(а):уговорил, пусть 3!

Ладно, Zub, уговорил, садись тоже: 3 - за предложенный Type для возможности сортировки "на лету", по всем параметрам. :wink:
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Поиск правильного решения

Сообщение olegy123 » 07.02.2017 17:36:27

Код: Выделить всё
    procedure TForm1._CompareItems(Sender: TObject; Node1, Node2: TTreeNode;var Compare: Integer);

Сравниваешь Node1, Node2
в Compare заносишь
если Node1 меньше Node2 то Compare = 1
если Node1 равно Node2 то Compare = 0
если Node1 больше Node2 то Compare = -1

Добавлено спустя 5 часов 12 минут 54 секунды:
кто такие художники?
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Поиск правильного решения

Сообщение vitaly_l » 08.02.2017 00:44:46

olegy123 писал(а):кто такие художники?

Кто такие Художники? Ну... Это такие классные люди, которые всё делают художественно и подтрунивают время от времени над программистами. Подмигивают им всячески, :wink: глаза вверх закатывают :roll: и выцыганивают у программистов всяческие секреты :mrgreen: . В общем очень хорошие и добрые люди :twisted: На самом деле: художники - это маска, за которую можно спрятаться, когда общаешься с программистами, у которых больше знаний и навыков, когда они начинают ругаться на неграмотные высказывания художников :cry: .
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Поиск правильного решения

Сообщение pupsik » 08.02.2017 02:34:26

Это такие классные люди, которые всё делают художественно
в принципе художественно посоветовали :mrgreen:
По поводу кода...
Добавьте рекурсию и почитайте вики о деревьях. Можно сделать разные варианты сортировок, фильтрацию...

п.с.
персонально художнику: я принудительно формат даты поставил не из-за кривости сортировки... :lol:
zub хм.. у вас художники нечто красной тряпки для быка? :))))
Вложения
dir_locate.7z
простенько и без вкуса?.
(60.33 КБ) Скачиваний: 428
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Поиск правильного решения

Сообщение zub » 08.02.2017 08:31:45

>>На самом деле: художники - это маска, за которую можно спрятаться
Так ты не художник...))
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Поиск правильного решения

Сообщение vitaly_l » 09.02.2017 16:04:11

olegy123 писал(а):кто такие художники?

Только программист может задать вопрос: Кто такие художники?...

И когда программисту объясняешь суть понятия "художники", только программист может сказать:
zub писал(а):Так ты не художник...


И если, теперь программисту, сказать: НЕТ - Я КОСМОНАВТ!
То только программист спросит, а: Кто такие космонавты?
И получив объяснение понятия "космонавты", только программист, сделает вывод: Так ты не космонавт...


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru