![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |