Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2018.02.11;
Скачать: CL | DM;

Вниз

Добавление айтемов одного PTree в другой   Найти похожие ветки 

 
Dimaxx ©   (2010-02-19 17:44) [0]

Сабж. Нужно сформировать дерево данных, некоторые данные сгруппированы в группы. Т.е. общий вид примерно такой:

Root
|_group1
| |_data1.1
| |_data1.2
|_group2
| |_data2.1
|_data10
|_data20


Для удобства группы и просто данные заносятся в разные временные Tree, потом сортируются и добавляются к основному дереву (сначала группы, потом данные). Сделано для того, чтобы проще было одновременно сортировать данные и группы по независимым признакам. Создаем дерево и два вспомогательных дерева для групп и данных:

Root:=NewTree(nil,"");
G:=NewTree(nil,"");
D:=NewTree(nil,"");


Передаем поочередно эти вспомогательные деревья в функцию, которая и заполняет их данными (для исключения ошибки сделал простое добавление 8 групп и 2 данных). Сортировку и прочее пока не делал, ибо наткнулся на сабж. Цепляем полученные группы и данные к Root:

if G.Count>0 then
for C:=0 to G.Count-1 do Root.Add(G.Items[C]);
if D.Count>0 then
for C:=0 to D.Count-1 do Root.Add(D.Items[C]);
G.Free;
D.Free;


Уже на 5-м добавлении получаем AV в Tree.Unlink. Если убрать обработку первого и сразу начать со второго, то на 2-м также получаем AV в Tree.Unlink. Самое интересное, что если отбросить эти вспомогательные деревья и передавать Root в функцию, то все работает и отлично заполняется. Т.е. конкретно не пашет копирование из одного Tree в другой.

Может кто сталкивался с подобным? Как вариант можно обойтись вспомогательными не Tree, а List и добавлять оттуда в основное дерево. List и сортировать попроще...


 
Дмитрий К ©   (2010-02-19 18:22) [1]

downto


 
Dimaxx ©   (2010-02-19 20:13) [2]

Хм, действительно, обратный перебор вкупе с Insert вместо Add решил проблему. Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2018.02.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.004 c
2-1412325941
Александр_2012
2014-10-03 12:45
2018.02.11
Word. Таблица, сквозные строки.


15-1470045469
sniknik
2016-08-01 12:57
2018.02.11
Можно ли залогинится в один домен под учеткой другого?


4-1283707527
irzyxa
2010-09-05 21:25
2018.02.11
Отмена меню пуск


2-1455535545
i2e
2016-02-15 14:25
2018.02.11
Memo - как выводить данные в одну строку?


2-1455549531
Dmk
2016-02-15 18:18
2018.02.11
Метод класса отсутствует