Главная страница
    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-1456006403
AgroFish
2016-02-21 01:13
2018.02.11
Помогите прочитать файл


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


2-1455961562
JohnKorsh
2016-02-20 12:46
2018.02.11
Запись со входа аудиокарты.


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


2-1454172714
Dmk
2016-01-30 19:51
2018.02.11
WM_WINDOWPOSCHANGED





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский