![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ASGDeveloper |
|
||||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
Есть у меня структура такого типа:
и есть переменная:
Проблема в том, что у меня не получается осуществить загрузку и сохранение этой переменной. Может будут идеи? |
||||
|
|||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
а ты перед обращением создал эту свою binarytree?
Это же ссылочный тип, потому перед обращением надо
а добавлять ветви:
|
||||
|
|||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
||||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А TStrings то тут каким боком???
Типизированные файлы вполне подойдут. Думаю, что вопрос скорее не в сохранении, а в последующем чтении. С сохранением вопросов быть не должно. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
ASGDeveloper, я не могу угадать, в чём у тебя заключается проблема, однако, как мне кажется, не надо сохранять указатели - при следующем запуске программы, в месте, на которое "метит" ветка твоего дерева, может располагаться объект "кнопка" или ещё чего. Сделай сохранение вложенности через скобки. Или через какое-то id, а при загрузке из файла создавай ветви при помощи new.
|
|||
|
||||
| ASGDeveloper |
|
||||||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
Дык просто перебираю элементы дерева и сохраняю
Абсолютно верно! Добавлено @ 12:18 Нет, конечно я не сохраняю указатель. Ведь U - это всегда 4 байта, а BinTree - сколько угодно. Была попытка сохранять так:
и грузить так:
Не катит. Это сообщение отредактировал(а) ASGDeveloper - 21.6.2006, 12:19 |
||||||
|
|||||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Нужно указатель после чтения устанавливать.
Указатели при каждом запуске указывают в разное место, так что нет смысла их читать. После чтения нужно прописать новое значение в указатели L и R. Добавлено @ 12:22 В остальном всё верно. |
|||
|
||||
| ASGDeveloper |
|
||||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
Ну вообщем вынес s в глобальные переменные и модифицировал код: (запись)
(чтение)
Теперь вроде заработало, но слхраняет только первый элемент дерева. Или грузит только первый, что менее вероятно. |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
ASGDeveloper, повторяю после себя и Snowy: после загрузки из файла указатели в L и R указывают куда угодно, но только не на следующие ветви! Тебе нет смысла сохранять восстанавливать поля L и R, потому как после загрузки их ты использовать не сможешь. Никак. Тебе надо заново резервировать память! Поэтому ещё хорошо, что у тебя обращается только к первой ветви, а остальных вроде и нет. Я думал, что при такой загрузке ты получишь Access Violation при попытке перехода по ссылкам L или/и R.
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Тут смысл в другом.
Человек не знает, КАК вообще сохранить дерево. Как нужно:
ЗЫ. Код не проверял - писал прямо в браузере. Но вроде всё правильно. Нужно только остальной код переделать со структуры и указателей на объекты. |
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
Вау! Круто! Спасибо огромное! Жаль не хватает сообщений для повышения репутации. Как быдет, тогда повышу. ок? ЗЫ Еще раз спасибо. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
ГЫ. Забыл.
В публишед секциях перед именем нужно еще написать property. If поправлю. |
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
||||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |