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

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

Как скопировать объект? [D6, Win95/98, WinME, Win2k, WinXP]


Woolen ©   (2002-12-24 15:25:00) 

Подскажите пожалуйста, как скопировать объект. Если написать, что переменная A равна B, то мы получим два скрытых указателя, ссылающихся на один и тот же объект в памяти. А надо, чтобы было два независимых объекта и два скрытых в переменных указателя, ссылающихся на разные объекты. Так, чтобы объект A можно было изменять независимо от объекта B. если кто знает, подскажите, как это делается?


han_malign   (2002-12-24 15:43:00) [1]

если пишешь компонент то наследование от TPersistent и вперед published свойства описывать, если простой класс - то общепринятый подход - копирующий конструктор, в C++ вызывается автоматом при присваивании классов, а в ОП - ручками a:=Tab.Create(b), либо как в TPersistent a:=Tab.Create; a.Assign(b);.

constructor Tab.Create(aFrom: Tab);{или procedure Tab.Assign(aFrom: Tab)}
begin
inherited Create;
FField1:=aFrom.FField1;
.......................
FPointerFieldSize:=aFrom.FPointerFieldSize;
GetMem(FPointerField,FPointerFieldSize);
move(aFrom.FPointerField^,FPointerField^,FPointerFieldSize);
.......................
FFieldN:=aFrom.FFieldN;
end;
- то-бишь ручками.


MBo   (2002-12-24 15:41:00) [2]

>аккуратно переписать все свойства из объекта А в объект В :-)
Т.е. сделать Assign, если объект - наследник TPersistent.
Для самописанных классов имплементировать Assign самому.


Игорь Шевченко   (2002-12-24 15:35:00) [3]

Создать объект В, аккуратно переписать все свойства из объекта А в объект В :-)


Наверх

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