Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация SetParentComponent для десериализации 
:(
    Опции темы
demonoide
Дата 26.11.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.4.2007
Где: Невоград

Репутация: нет
Всего: нет



Программа представляет собой набор список групп, в которых находятся пользователи.

Диаграмма классов:

TGroup List
|-->TUserList
---|-->TStruct

Т.е. список групп содержит -> списки юзеров -> которые содержат в себе структуру каждого юзера.

Вот так выглядят классы:

Код

type TGroupList = class (TComponent)

  private
    List: TObjectList;
    function GetItems(Index: Integer): TUserList;
    procedure SetItems(Index: Integer; const Value: TUserList);

  public
   function Count: Integer;
   procedure Add(Value: TUserList);
   procedure Clear;
   procedure Delete(I:Integer);

   constructor Create;
   destructor  Destroy; override;

   procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
   procedure SetParentComponent(Value: TComponent); override;

   property Items[Index:Integer]: TUserList read GetItems write SetItems;
  default;

  end;


Код

  type TUserList = class (TComponent)

  private
   Name: String;
   List: TObjectList;

   function GetTheName: String;
   procedure SetTheName(const Value: String);

   function GetItems(Index: Integer): TUserStruct;
   procedure SetItems(Index: Integer; const Value: TUserStruct);

  public
   property Items[Index:Integer]: TUserStruct read GetItems write SetItems;

   function Count: Integer;
   procedure Add(Value: TUserStruct);
   procedure Clear;
   procedure Delete(I:Integer);

   procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
   procedure SetParentComponent(Value: TComponent); override;


  constructor Create;
  destructor  Destroy; override;

  published
     property GroupName: String read GetTheName write SetTheName;

  end;


Код

 type
 TUserStruct = class (TComponent)
 private
  ThName:String;               

 protected
  procedure SetTheName(NewName: String);
  function GetTheName: String;

 public
   constructor Create;

 published
  property ItemName: String read GetTheName write SetTheName;
 end;


Сделать высокоуровневую сериализацию - получилось (взял с сайта rsdn), а с десериализацией - проблема, в душе не чаю как писать для моей реализации SetParentComponent(Value: TComponent); override;

Если можно приведите пример или дайте что почитать, ибо в Интернете мало чего нашёл по этому поводу. 
PM MAIL WWW ICQ Skype   Вверх
Felan
Дата 26.11.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: 2
Всего: 7



Никак. 

Делай вручную сохранение и восстановление.

Но, судя по тому, что ты написал, я подозреваю, что ты пытался использовать встроенную сериализацию...
Тогда тебе надо элементы наслеодовать от TCollectionItem, а вместо TObjectList использовать TCollection.

Тогда будетут автоматически сохраняться published свойства.




--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
demonoide
Дата 26.11.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.4.2007
Где: Невоград

Репутация: нет
Всего: нет



Всё шикарно сохраняется при моей реализации, но не десериализуется.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.