Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.039 c
1-1106655454
Phoenix
2005-01-25 15:17
2005.02.13
Help в Delphi


9-1099757382
Creep
2004-11-06 19:09
2005.02.13
Rotate in OpenGL


14-1106329949
dredd
2005-01-21 20:52
2005.02.13
просьба админам


3-1105863428
tytus
2005-01-16 11:17
2005.02.13
Помогите с запросом.


3-1105051517
JaVa73
2005-01-07 01:45
2005.02.13
не открывается libmysql.dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский