Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.13;
Скачать: CL | DM;

Вниз

TTreeView - сохранение в файл   Найти похожие ветки 

 
k@rt ©   (2005-01-29 23:14) [0]

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


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

никак.

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


 
K@rt ©   (2005-01-29 23:28) [2]

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


 
Defunct ©   (2005-01-29 23:34) [3]

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

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 - список узлов, прикрепленных к данному.


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

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;



Страницы: 1 вся ветка

Текущий архив: 2005.02.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.045 c
3-1105586168
AbramovVi
2005-01-13 06:16
2005.02.13
FireBird1.5 заведение новых пользователей


11-1090850697
AlexandrK
2004-07-26 18:04
2005.02.13
Проблемы с MDI


3-1105534884
sergey18
2005-01-12 16:01
2005.02.13
Опять про даты в MSSQL, но другое


6-1101735729
Knight
2004-11-29 16:42
2005.02.13
Что такое со стримом?


3-1105521527
Georji
2005-01-12 12:18
2005.02.13
Ошибка открытия...