Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
5-1155654550
DevilDevil
2006-08-15 19:09
2007.06.10
ДизайнТайм VS Рантайм


15-1179085322
P
2007-05-13 23:42
2007.06.10
Жителя Киева лишили свободы за продажу нелицензионной продукции.


15-1179046742
SergeR
2007-05-13 12:59
2007.06.10
Bas2Pas конвертер


15-1179055784
boriskb
2007-05-13 15:29
2007.06.10
И все таки (старый спор)


2-1179416461
lavrenty
2007-05-17 19:41
2007.06.10
Log событий





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский