![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TObjectList
Елвис © (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]
> должна быть лучшая реализация
Зачем это понадобилось?