SmAlex |
Отправлено: 27.02.2006, 15:58 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 91
|
Подскажите, пож., кто знает:
Постановка задачи:
…..В процессе работы программы пользователь вводит данные и формирует при этом некую древовидную структуру в TreeView,
…………………
Шаг 1:
TreeView->Items->AddObject(TreeView->Selected, Edit->Text, ptr);
То есть каждому узлу ставится в соответствие объект с определёнными данными.
Далее, структура TreeView после каждого изменения сохраняется в файл
Шаг 2:
TreeView->SaveToFile(ExtractFilePath(Application->ExeName)+"FileTreeView");
Далее повторяется шаг 1 уже для нового узла с новым объектом и шаг 2.
Вопросы:
1. Сохраняются ли сами присоединённые объекты при шаге 2 или нужно предпринять для этого дополнительные действия?
2. Как при загрузке структуры TreeView из файла
TreeView->LoadFromFile(ExtractFilePath(Application->ExeName)+"FileTreeView");
по номеру выбранного узла Node:
NodeNumber=TreeView->Selected->AbsoluteIndex;
получить сведения о соответствующем выбранному узлу объекте?
У Архангельского (в книжке С++ Builder 6 ) на стр 176 приведен код -
TreeView->Items->Iten->Node[1]->Data;
К сожалению, не понимаю как это работает и что значит ?
Отредактировано SmAlex — 27/02/2006, 17:21 |
|
Valdemar |
Отправлено: 27.02.2006, 17:41 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
TreeView->SaveToFile записывает в файл только узлы дерева, без связанных с ними объектами. Поэтому о записи объектов в файл, соответственно и чтении, вы должны позаботиться сами. |
|
SmAlex |
Отправлено: 27.02.2006, 17:50 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 91
|
Спасибо, понятно — а ответ на второй вопрос Вам известен ? |
|
Doga |
Отправлено: 27.02.2006, 19:59 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
Valdemar cобственно, ответил сразу на 2 Ваших вопроса.
TTreeNode::Data — это указатель на объект типа void:
QUOTE |
Points to application-defined data associated with the tree node.
__property void * Data = {read=FData, write=SetData};
Description
Use the Data property to associate data with a tree node. Data allows applications to quickly access information about the entity represented by the node.
|
Самому дереву (TTreeView) ничего не известно о структуре данных хранимых этим указателем. Поэтому эти объекты не будут ни записыватся, ни, тем более, читаться вышеупомянутыми процедурами.
Вся ответственность за использование и хранение этих данных ложится на Вас.
Следовательно, если Вы хотите сохранять и загружать эти данные, пишите свои процедуры LoadFomFile и SaveToFile...
Отредактировано Doga — 27/02/2006, 21:56
|
|
SmAlex |
Отправлено: 27.02.2006, 22:44 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 91
|
Понятно, спасибо .... |
|
Grigoriy |
Отправлено: 28.02.2006, 05:30 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
QUOTE | Поэтому эти объекты не будут ни записыватся, ни, тем более, читаться вышеупомянутыми процедурами.
Вся ответственность за использование и хранение этих данных ложится на Вас.
|
Ну вот, например, если я выключу компьютер, а потом включу.
Так что ваши объекты приймут те же адреса в оперативной памяти?
|
|
SmAlex |
Отправлено: 28.02.2006, 10:34 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 91
|
Уже понял = спасибо ! |
|