| 
| 
 | Вопрос # 2 798/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Пример из книги "Библия Delphi" с использованием TreeView, но там не описывается сохраниение о загрузка файла - может кто-то сможет помоч?
 
 Пример и исходник в прикрипленном файле!
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) 
|  |   Вопрос задал: unl0K (статус: Посетитель)Вопрос отправлен: 17 мая 2009, 18:11
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 16; последнее сообщение — 18 мая 2009, 13:23; участников в обсуждении: 4. 
|   | unl0K (статус: Посетитель), 17 мая 2009, 19:30 [#1]:неужели ни кто не ответит???? Относись к людям так, как хотел бы, чтобы они к тебе относились! |  
|   | Ученый (статус: 8-ой класс), 17 мая 2009, 19:42 [#2]:как понять "сохраниение о загрузка файла"? |  
|   | unl0K (статус: Посетитель), 17 мая 2009, 20:00 [#3]:ой, сохранение и загрузка! Относись к людям так, как хотел бы, чтобы они к тебе относились! |  
|   | Вадим К (статус: Академик), 17 мая 2009, 20:36 [#4]:Надо написать обычное рекурсивное сохранение и загрузку. А иначе тут никак. Линейное сохранение можно конечно сделать, но... с него потом не загрузится. Подсказка - при сохранении нужно сохранять ещё и level - все items имеют его. Алгоритм сохранение приблизительно такой
 - сохранить текущий элемент
 - в цикле вызвать процедуру сохранения для всех дочерних.
 Справитесь?
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | unl0K (статус: Посетитель), 17 мая 2009, 20:40 [#5]:Спасибо,неуверен, что справлюсь, щас буду мучатся)) Относись к людям так, как хотел бы, чтобы они к тебе относились! |  
|   | unl0K (статус: Посетитель), 17 мая 2009, 20:57 [#6]:Нет неполучается, даже незнаю с чего начать, я просто с такой структурой неработал,может покажите сохранение,и с левелом неразобрался! Относись к людям так, как хотел бы, чтобы они к тебе относились! |  
|   | Вадим К (статус: Академик), 17 мая 2009, 21:02 [#7]:Так не получается или даже ничего не было написано? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | 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™ (статус: Доктор наук), 18 мая 2009, 08:22 [#10]:Сохранять/загружать TreeView (и вообще любую древовидную структуру) нужно в XML. Никакой Level тут не нужен, только рекурсия. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 18 мая 2009, 09:56 [#11]:А почему в xml сразу? можно и без него. И часто как раз нужно без него. а level - с ним просто удобнее. он просто бывает неявно используется.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | 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 (статус: Посетитель), 18 мая 2009, 12:21 [#14]:Спасибо! Я думал использовать сторонние Xml!
 и рекурсия заметна!
 Относись к людям так, как хотел бы, чтобы они к тебе относились! |  
|   | Вадим К (статус: Академик), 18 мая 2009, 12:23 [#15]:Ну библиотеку стороннюю наверно все равно прийдётся использовать, или майкрософтовский парсер, а он очень быстрый (это был жесткий сарказм, на самом  деле он достаточно медленный, а если его ещё и неверно использовать...). Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 18 мая 2009, 13:23 [#16]:Я использую TECXMLParser. Это, конечно, компонент, но я его всегда создаю/убиваю в рантайме. Поэтому ничего ставить не приходится. Сам модуль компонента просто лежит в папке с программой. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |