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

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

помогите сделать временную копию объекта


Страницы:   1 2

newid ©   (2005-01-30 23:14:00) 

может, вопрос совсем несерьезный, но не получается что-то...
нужно создать временную копию объекта ("резервную копию", из которой можно будет восстановить состояние исходного объекта при необходимости), при этом объект может быть экземпляром одного из нескольких наследников общего дедушки, т.е. точно класс объекта не знаем.
такое:
obj2 := obj1;
try
DoSome(obj1);
except
obj1 := obj2;
end;
само собой не катит, потому что с сылками работаем.
как вообще оперировать объектами в Object Pascal?


хм   (2005-01-31 02:19:00) [21]

можно использовать CopyMemory, если в объекте нет указателей. Т.е, нужно много думать.
Но лучше не надо.(делать, а не думать :)


Юрий Зотов   (2005-01-31 01:49:00) [22]

> как вообще оперировать объектами в Object Pascal?

Хороший вопрос. Но не знаю, как ответить. Писать книгу в online почему-то не готов.


jack128   (2005-01-31 00:00:00) [23]

newid   (30.01.05 23:43) [2]
дает такую ошибку:
---------------------------
map
---------------------------
Cannot assign a TSomeObject to a TSomeObject.

потому что этот метод нужно реализововать самому.


newid   (2005-01-30 23:43:00) [24]


> [1] P.N.P.


ну... это если объекты -- экземпляры класса-наследника TPersistent.
и, кстати, у меня почему-то первая операция:
Obj2.Assign(Obj1);
дает такую ошибку:
---------------------------
map
---------------------------
Cannot assign a TSomeObject to a TSomeObject.
---------------------------
OK  
---------------------------
вот мой код:

var
 o1: TSomeObject;
 o2: TSomeObject;
begin
 o1 := TSomeObject.Create;
 o2 := TSomeObject.Create;
 o1.StringProp := 'test1';
 ShowMessage(o1.StringProp);
 o2.Assign(o1);  //Cannot assign a TSomeObject to a TSomeObject.
 o1.StringProp := 'test2';
 ShowMessage(o1.StringProp);
 o1.Assign(o2);
 ShowMessage(o1.StringProp);  //по задумке должно показать 'test1'
 o1.Free;
 o2.Free;
end;


P.N.P.   (2005-01-30 23:18:00) [25]

Obj2.Assign(Obj1);
...
Obj1.Assign(Obj2);


Страницы:   1 2

Наверх

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