![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день всем. Необходимы исходники примера, чтобы сохранить дерево с данными (string и integer) в файл и восстановление из файла.
Примеры все посмотрел, перелистал все поисковики, сижу ночами уже несколько дней, но разобраться не могу, так как я не программист. В готовом примере смогу разобраться. Заранее спасибо. |
#2
|
|||
|
|||
![]() Цитата:
Зависит от того, как у тебя храняться данные в дереве. В принципе, т.к. xml это, по сути, тексовый файл, то можно сохранять очень просто: Код:
procedure SaveTreeToXML(ATree : TTreeView; AFilaName : String); procedure SaveNode(ANode : TTreeNode; AList : TStringList); var I : Integer; begin AList.Add('<Node value="' + ANode.Caption + '">'); For I := 0 To Node.Items.Count-1 Do SaveNode(Node.Items[i],AList); AList.Add('</Node>'); end; var I : Integer; L : TStringList; // Для простоты сохраняем в список begin L : TStringList.Create; L.Add('<Tree>'); For I := 0 To TreeView.Items.Count-1 Do If TreView.Items[i].Parent = Nil Then SaveNode(TreView.Items[i],L); L.Add('</Tree'>); L.SaveToFile(AFilaName); L.Free; end; С чтением чуть сложнее, но тоже не сложно. Просто читаешь строчку и принимаешь решение, что делать. Если стукрура данных сложнее, то рекомендую работать с TXMLDocument. По сути, это то же дерево, так что построить одно дерево по другому не так и сложно. |
#3
|
|||
|
|||
![]() Запись у меня вот такая:
Код:
type PNodeOptions = ^NodeOptions; NodeOptions=record Name: String[255]; Surname: String[255]; Address: String[255]; Indes: Integer; end; Я сейчас на примере рассматриваю вот этот http://k210.org/delphi/main/1/ вариант. Но я не могу в нем понять что такое "TNodeSaveDataProc = " в объявлении типов и отсюда непонятна вот эта конструкция " Код:
Procedure SaveTreeviewToStream( tv: TTreeview; S: TStream; saveProc: TNodeSaveDataProc ); Последний раз редактировалось M.A.D.M.A.N., 14.09.2013 в 11:13. |
#4
|
||||
|
||||
![]() Можно сделать проще - сохранять содержимое формы целиком, после перезапуска сборки состояние TreeView восстановится полностью, да и не только дерева.
Код:
procedure TForm1.FormCreate(Sender: TObject); var FStr: TFileStream; MemStr: TMemoryStream; begin if FileExists('Form1.ini') then begin Form1.DestroyComponents; FStr:= TFileStream.Create('Form1.ini', fmOpenRead); MemStr:= TMemoryStream.Create; ObjectTextToBinary(FStr, MemStr); MemStr.Position:= 0; MemStr.ReadComponent(Form1); MemStr.Free; FStr.Free; end; end; procedure TForm1.FormDestroy(Sender: TObject); var FStr: TFileStream; MemStr: TMemoryStream; begin FStr:= TFileStream.Create('Form1.ini', fmCreate); MemStr:= TMemoryStream.Create; MemStr.WriteComponent(form1); MemStr.Position:= 0; ObjectBinaryToText(MemStr, FStr); MemStr.Free; FStr.Free; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |