Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TObjectList.Assign


Iriss ©   (2009-02-09 13:00:00) 

хочу сделать полную копию объекта
var ContainerData: TObjectList;
var InitData    : TObjectList;
var CopiedList  : TObjectList;
var Data: TMyType;
var CopiedData: TMyType;

   ContainerData := TObjectList.Create();
   InitData         := TObjectList.Create();
//  CopiedList      := TObjectList.Create();

   InitData.Add( Data );

   ContainerData.Assign( InitData , laCopy, CopiedList);

   CopiedData := CopiedList.First;


Выкидывает ошибку и копию не создает.
Подскажите, что не так делаю


Сергей М.   (2009-02-09 13:51:00) [1]

Копию именно объектаи не создаст - TObjectList не перекрывает ни Assign ни AssignTo.
Максимум что можно получить - копию списка указателей на объекты, но не копии самих объектов.
Объекты сами должны заботиться о методах своего клонирования, контейнеры объектов за это не отвечают.

Удивись:
ShowMessage(IntToStr(ContainerData.Count));


Iriss   (2009-02-09 13:40:00) [2]

Теперь ошибку не кидает, но и копию объекта при таком коде не создает

var ContainerData: TObjectList;
var InitData    : TObjectList;
var CopiedList  : TObjectList;
var Data: TMyType;
var CopiedData: TMyType;
var K: Double;
var K2: Double;
begin
  ContainerData := TObjectList.Create();
  InitData         := TObjectList.Create();
  CopiedList      := TObjectList.Create();

  InitData.Add( Data );

   K := CopiedList.Count; //=0
   K2 := InitData.Count;  //=1

  ContainerData.Assign( InitData , laCopy, CopiedList);

   K := CopiedList.Count; //=0
   K2 := InitData.Count;  //=1

  CopiedData := CopiedList.First;


Ega23   (2009-02-09 13:07:00) [3]

А создавать CopiedList Пушкин будет?


Сергей М.   (2009-02-09 13:07:00) [4]

Не читаешь текст ошибки.


Наверх

Титульная страница Поиск, карта сайта Написать письмо