Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

Присвоение объектов   Найти похожие ветки 

 
Lamka   (2005-09-12 15:59) [0]

Есть некая коллекция
TmyCollect = class(TCollection)
...
myC : TmyCollect;

есть некий объект
TmyObj = class
FmyCollect : TmyCollect
...
myObj : TmyObj;

можно ли присвоить все значения из myC в FmyCollect таким образом?:

myObj.FmyCollect := myC;

что будет в данном случае, FmyCollect будет присвоена ссылка на myC или значения из myC будут записаны в FmyCollect, и последующее удаление myC не затронет FmyCollect?


 
Digitman ©   (2005-09-12 16:08) [1]


> FmyCollect будет присвоена ссылка на myC или значения из
> myC будут записаны в FmyCollect


1-е


> последующее удаление myC не затронет FmyCollect?


что значит "удаление myC" ?


 
Lamka   (2005-09-12 16:20) [2]


var
myC : TmyCollect;
myObj : TmyObj;
begin

myC := TmyCollect.Create;
/* заполняем myC */

myObj := TmyObj.Create;
myObj.FmyCollect := myC;

myC.Free; // после этого значения в FmyCollect не изменятся?  (IMHO) если FmyCollect хранит ссылку на myC то полсе удаления myC, FmyCollect будет непонятно куда ссылаться
...

end;


 
Digitman ©   (2005-09-12 16:27) [3]


> (IMHO) если FmyCollect хранит ссылку на myC то полсе удаления
> myC, FmyCollect будет непонятно куда ссылаться


так точно, сэр.
в дан.случае именно так.
только не "после удаления", а после разрушения объекта.

после

myObj.FmyCollect := myC

поле myObj.FmyCollect становится хранителем ссылки на тот же объект, на который в этот момент ссылается myC

после myC.Free объект , на который ссылается myC, будет разрушен, в то время как поле myObj.FmyCollect по-прежнему продолжает сылаться на якобы существующий объект.


 
Lamka   (2005-09-12 17:06) [4]

а если явного myC.Free; не будет, но myC объявлена как локальная переменная, после выхода из области видимости где она была объявленна, данные в myObj.FmyCollect останутся рабочими?


 
Digitman ©   (2005-09-12 17:08) [5]


> Lamka   (12.09.05 17:06) [4]


по идее - да.


 
ananax   (2005-09-12 17:13) [6]

попробуй myObj.Assign(MyC); вроде в этом случае будет создана копия объекта....



Страницы: 1 вся ветка

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
8-1115369906
anat
2005-05-06 12:58
2005.10.02
OpenGL + пересечение


1-1126014295
NikNet
2005-09-06 17:44
2005.10.02
Чем отличаются виртуальные и простые методы?


10-1105327327
Shadowy
2005-01-10 06:22
2005.10.02
Парсинг .doc в Delphi


5-1101365435
инког
2004-11-25 09:50
2005.10.02
treeview


5-1101217264
main
2004-11-23 16:41
2005.10.02
Перекрытие события компонента