Форум: "Основная";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
ВнизСохранить 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.056 c