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

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

TObjectList


Страницы:   1 2

Елвис ©   (2008-04-09 14:51:00) 

скопировать все Items из одного TObjectList в другой, но не указатели

var
 OL1, OL2: TObjectList;

begin
 OL2.Clear;
 for i := 0 to OL1.Count do
   OL2.Add(OL1.Items[i]);

в этом случае добавляются указатели на Items первого списка. Надо что-то такое:

var
 OL1, OL2: TObjectList;
 a: TItemType;
begin
 OL2.Clear;
 for i := 0 to OL1.Count do
 begin  
   a := TItemType.Create;
   a.Caption := TItemType(OL1.Items[i].Caption);
   ... здесь переприсвоить свойства a.свойство := OL1.Items[i].свойсво
   OL2.Add(a);
 end;

но тогда получается некрасивый вариант. должна быть лучшая реализация


Kolan   (2008-04-09 15:02:00) [21]

> а если объект не имеет метода Assign?

Читай [3]
Надов классе экземпляры которого ты храниш в TObjectList сделатьметод Assign.


DVM   (2008-04-09 15:00:00) [22]


> Kolan ©   (09.04.08 14:56) [3]

а если объект не имеет метода Assign?


Kolan   (2008-04-09 14:56:00) [23]

> должна быть лучшая реализация

Надо в классе экземпляры которого ты храниш в TObjectList сделать метод Assign. В этот Assign и надо поместить «переприсвоить свойства a.свойство := OL1.Items[i].свойсво».

Тогда цикл будет такой.
for i := 0 to OL1.Count do
begin  
  a := TItemType.Create;
  a.Assign(OL1.Items[i])
  OL2.Add(a);
end;


ЗЫ
И еще попроси кого-нибудь оторвать тебе руки за названия переменных.


Сергей М.   (2008-04-09 14:54:00) [24]

Т.е. вопрос сводится к "как клонировать объект" ?


DVM   (2008-04-09 14:54:00) [25]


> должна быть лучшая реализация

Зачем это понадобилось?


Страницы:   1 2

Наверх

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