Главная страница
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.038 c
1-1106836173
Weare
2005-01-27 17:29
2005.02.13
Как при отображении сообщения проиграть какой-нибудь *.wav файл


6-1101985857
DelphiN!
2004-12-02 14:10
2005.02.13
Получить IP адрес клиента, подключившегося к TidMappedPortTCP


14-1106588144
kaZaNoVa
2005-01-24 20:35
2005.02.13
Unix дома миф или реальность ?


14-1106244642
netnetnetnet
2005-01-20 21:10
2005.02.13
Физика


14-1106412036
Никита
2005-01-22 19:40
2005.02.13
Помогите найти Kylix!