Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2018.02.11;
Скачать: [xml.tar.bz2];

Вниз

Добавление айтемов одного 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 вся ветка

Форум: "KOL";
Текущий архив: 2018.02.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.001 c
2-1456134213
Мочалка
2016-02-22 12:43
2018.02.11
сочетания без повторений


15-1470554356
ВладОшин
2016-08-07 10:19
2018.02.11
Цифровой старый фотик, останавливается копирование


15-1470346201
Юрий
2016-08-05 00:30
2018.02.11
С днем рождения ! 5 августа 2016 пятница


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


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский