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

Вниз

Сохранить TPersistent который часть TComponent   Найти похожие ветки 

 
_artur ©   (2007-03-19 19:59) [0]

Привет всем. У меня такая ситуация - у меня типа файла настроек, кроме числовых, строковых и т.д. значений хочеться сохранять

в нём и объекты, причём объекты унаследованные от TPersistent. Вот класс для сохранения

class TOptions : public TComponent
{
public:
       __fastcall TMonitorOptions(TComponent *Owner);
       __fastcall ~TMonitorOptions();

       __property Variant VarOptions[String __index]  = { read=GetVarOptions, write=SetVarOptions};
       __property TPersistent *ObjOptions[String __index]  = { read=GetObjOptions, write=SetObjOptions};
protected:
       virtual void __fastcall DefineProperties(TFiler* Filer);
       DYNAMIC void __fastcall GetChildren(TGetChildProc Proc, TComponent* Root);
};

Вариантные свойства я сохраняю в DefineProperties, а объектные свлойства я сохраняю так: у меня есть класс:

class TObjOption: public TComponent
{
   public:
       __fastcall DObjOption(TComponent *AOwner)
           : TComponent(AOwner) { };

       __property TPersistent *ObjProperty = {read=FObjProperty, write=FObjProperty};

       DYNAMIC void __fastcall SetParentComponent(TComponent* Value);
};

и в методе GetChildren класса TOptions я создаю объект TObjOption, его свойству ObjProperty я присваиваю объект какой нужно и

таким макаром его сохраняю:

void __fastcall TOptions::GetChildren(TGetChildProc Proc, TComponent* Root)
{
   TObjOption *objOpt;
   CurrentObjIterator=ObjMap.begin();
   while(CurrentObjIterator!=ObjMap.end())
   {
       objOpt = new TObjOption(NULL);
       objOpt->ObjProperty = (*CurrentObjIterator).second;
       objOpt->Name = (*CurrentObjIterator).first;
       Proc(objOpt);
       delete objOpt;
       CurrentObjIterator++;
   }
}

сохранияет без проблем, но почему-то при загрузке выдаёт: "Invalid property path"
Может вы знаете как исправить эту проблему. Извините что на С++, библиотека ж одна, а код вроде простой может и так понятно будет


 
galak   (2007-04-14 02:55) [1]

Видимо у Вас получается 2 одноименных объекта. Сбросьте пример получаемого файла, тогда можно будет говорить точнее.



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

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

Наверх




Память: 0.47 MB
Время: 0.027 c
2-1179706835
delphino
2007-05-21 04:20
2007.06.10
Как отфильтровать по численному полю?


2-1179388526
Сергей_112233
2007-05-17 11:55
2007.06.10
простой вопрос


15-1178883892
Servelat
2007-05-11 15:44
2007.06.10
Даром преподаватели...


2-1179409650
Тимоха
2007-05-17 17:47
2007.06.10
цвет в итеме


2-1179515212
Пргораммер
2007-05-18 23:06
2007.06.10
Код клавиши Esc