Главная страница
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.054 c
1-1106592290
e-statik
2005-01-24 21:44
2005.02.13
а ПОДСКАЖИТЕ компонент сплиттер чтоб ресайзить окна как в 3DMAXe?


3-1105556863
про
2005-01-12 22:07
2005.02.13
Sortirovka zapisej v alfavitnom porjadke


1-1106842407
Knoxville
2005-01-27 19:13
2005.02.13
Загрузка из ресурсов


14-1106479264
Чеширский_Кот
2005-01-23 14:21
2005.02.13
Нужна фотография Шевченки


1-1107021755
Mixi
2005-01-29 21:02
2005.02.13
RasReader