|
Вопрос # 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. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|