Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 798

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Пример из книги "Библия Delphi" с использованием TreeView, но там не описывается сохраниение о загрузка файла - может кто-то сможет помоч?

Пример и исходник в прикрипленном файле!

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

unl0K Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: unl0K (статус: Посетитель)
Вопрос отправлен: 17 мая 2009, 18:11
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 16; последнее сообщение — 18 мая 2009, 13:23; участников в обсуждении: 4.
unl0K

unl0K (статус: Посетитель), 17 мая 2009, 19:30 [#1]:

неужели ни кто не ответит????
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Ученый

Ученый (статус: 8-ой класс), 17 мая 2009, 19:42 [#2]:

как понять "сохраниение о загрузка файла"?
unl0K

unl0K (статус: Посетитель), 17 мая 2009, 20:00 [#3]:

ой, сохранение и загрузка!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Вадим К

Вадим К (статус: Академик), 17 мая 2009, 20:36 [#4]:

Надо написать обычное рекурсивное сохранение и загрузку. А иначе тут никак. Линейное сохранение можно конечно сделать, но... с него потом не загрузится.
Подсказка - при сохранении нужно сохранять ещё и level - все items имеют его. Алгоритм сохранение приблизительно такой
- сохранить текущий элемент
- в цикле вызвать процедуру сохранения для всех дочерних.
Справитесь?
Галочка "подтверждения прочтения" - вселенское зло.
unl0K

unl0K (статус: Посетитель), 17 мая 2009, 20:40 [#5]:

Спасибо,неуверен, что справлюсь, щас буду мучатся))
Относись к людям так, как хотел бы, чтобы они к тебе относились!
unl0K

unl0K (статус: Посетитель), 17 мая 2009, 20:57 [#6]:

Нет неполучается, даже незнаю с чего начать, я просто с такой структурой неработал,может покажите сохранение,и с левелом неразобрался!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Вадим К

Вадим К (статус: Академик), 17 мая 2009, 21:02 [#7]:

Так не получается или даже ничего не было написано?
Галочка "подтверждения прочтения" - вселенское зло.
unl0K

unl0K (статус: Посетитель), 17 мая 2009, 21:09 [#8]:

ну пытаюсь написать но бред получается,не пойму что подрозумивается под рекурсивным сохранением?
В цикле пытаюсь сохранить каждое поле но сохраняется только последнее, и ненашол level у treeview!

пытался записать так: создал переменную fs:text и методом write в цикле каждое поле PStruct(TreeView1.items[i].Data).icq) - вот и бред походу, непойму я как нужно сделать!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Вадим К

Вадим К (статус: Академик), 17 мая 2009, 23:41 [#9]:

вот вот. пытаетесь все сохранить одной пачкой. А как потом загружать?
По поводу level. Я разве написал, что это свойство TreeView? Это свойство Items и указывает оно, на каком уровне вложенности находиться элемент.
Рекурсия - это когда процедура вызывает сама себя. Будет время - напишу. Для сохранения в файл не писал, а вот для сохранения в базу - да.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 18 мая 2009, 08:22 [#10]:

Сохранять/загружать TreeView (и вообще любую древовидную структуру) нужно в XML. Никакой Level тут не нужен, только рекурсия.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 18 мая 2009, 09:56 [#11]:

А почему в xml сразу? можно и без него. И часто как раз нужно без него.
а level - с ним просто удобнее. он просто бывает неявно используется.
Галочка "подтверждения прочтения" - вселенское зло.
unl0K

unl0K (статус: Посетитель), 18 мая 2009, 11:56 [#12]:

ну просто на практике в колледже буду писать программу подобную, там свои компоненты ставить нельзя, тут xml отподает.Вадим К, показалиб как с этим level работать, а то очень нужно сохранить/загрузить!
min@y™, а как всю эту кухну грамотно сохранить в xml?
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Вадим К

Вадим К (статус: Академик), 18 мая 2009, 12:17 [#13]:

xml и компоненты - весьма перпендикулярные понятия. Никакой привязки.
Код... я почти словами написал. Ну где то так
procedure SaveNode(node:TTreeNode; f:file);
var i:integer;
begin
  Write(f, node.level);
  Write(f, node.data^, размер данных)
  for i := 0 to node.ChildrenCount-1 do
    SaveNode(node.item[i], f);
end;
//вызов
Rewrite(f);
SaveNode(TreeView.TopNode,f);
CloseFile(f);
Это весьма схематический код, так как компилятора нет, а свойства я уже плохо помню.
Галочка "подтверждения прочтения" - вселенское зло.
unl0K

unl0K (статус: Посетитель), 18 мая 2009, 12:21 [#14]:

Спасибо!
Я думал использовать сторонние Xml!
и рекурсия заметна!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Вадим К

Вадим К (статус: Академик), 18 мая 2009, 12:23 [#15]:

Ну библиотеку стороннюю наверно все равно прийдётся использовать, или майкрософтовский парсер, а он очень быстрый (это был жесткий сарказм, на самом деле он достаточно медленный, а если его ещё и неверно использовать...).
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 18 мая 2009, 13:23 [#16]:

Я использую TECXMLParser. Это, конечно, компонент, но я его всегда создаю/убиваю в рантайме. Поэтому ничего ставить не приходится. Сам модуль компонента просто лежит в папке с программой.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 5 апреля 2020, 07:37
Выполнено за 0.02 сек.
Рейтинг@Mail.ru