Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TTreeView - сохранение в файл [D7, WinXP]


k@rt ©   (2005-01-29 23:14:00) 

У меня в TTreeView у каждого TTreeNode Data указывает на запись неопределнного размера. Как всю эту древовидную структуру с Data сохранять в файл и загружать из файла? Надо, чтобы не сильно тормозно сохранение и загрузка работала.
Кто что подсказать может?


Defunct   (2005-01-29 23:39:00) [1]

Save/Load делаете примерно так:

propcedure TMyDataStruct.Save;
var
 i : integer;
begin
 try
   Stream.Write( поля данных );
   for i := 0 to Count - 1 do
       Items[i].Save(Stream)
 except
   < обработка ошибок записи >
 end
end;

procedure TMyDataStruct.Load;
var
 i : integer;
begin
 try
   Stream.Read( поля данных );
   // тут кол-во прикрепленных узлов уже прочитано
   for i := 0 to Count - 1 do
   begin
     Items[i] := TMyDataStruct.Create;
     Items[i].Load(Stream)
   end
 except
   < обработка исключений загрузки >
 end
   
end;


Defunct   (2005-01-29 23:34:00) [2]

лучше чтобы ваш класс поддерживал древовидную структуру например так:

TMyDataStruct = class
private
 ... поля данных

public
 property Items[index: integer]:TMyDataStruct read ... write ..
 property Parent: TMyDataStrcut;
 property TreeNode: TTreeNode

 procedure Save(Stream: TStream):virtual;
 procedure Load(Stream: TStream):virtual;
 ..
end;

Parent это будет родетельский узел.
Items - список узлов, прикрепленных к данному.


K@rt   (2005-01-29 23:28:00) [3]

А как лучше сделать сохранение, чтобы потом древовидную структуру загрузить? Чтобы это не очень медленно работало при большом кол-ве TTreeNode.


Defunct   (2005-01-29 23:23:00) [4]

никак.

переделывайте структуру. в Node.Data храните указатель на объект с полями данных неопределенного размера и с методами записи в файл/stream.


Наверх

Титульная страница Поиск, карта сайта Написать письмо