![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Присвоение объектов
Lamka © (2005-09-12 15:59:00)Есть некая коллекция
TmyCollect = class(TCollection)
...
myC : TmyCollect;
есть некий объект
TmyObj = class
FmyCollect : TmyCollect
...
myObj : TmyObj;
можно ли присвоить все значения из myC в FmyCollect таким образом?:
myObj.FmyCollect := myC;
что будет в данном случае, FmyCollect будет присвоена ссылка на myC или значения из myC будут записаны в FmyCollect, и последующее удаление myC не затронет FmyCollect?
ananax (2005-09-12 17:13:00) [1]попробуй myObj.Assign(MyC); вроде в этом случае будет создана копия объекта....
Digitman (2005-09-12 17:08:00) [2]
> Lamka (12.09.05 17:06) [4]
по идее - да.
Lamka (2005-09-12 17:06:00) [3]а если явного myC.Free; не будет, но myC объявлена как локальная переменная, после выхода из области видимости где она была объявленна, данные в myObj.FmyCollect останутся рабочими?
Digitman (2005-09-12 16:27:00) [4]
> (IMHO) если FmyCollect хранит ссылку на myC то полсе удаления
> myC, FmyCollect будет непонятно куда ссылаться
так точно, сэр.
в дан.случае именно так.
только не "после удаления", а после разрушения объекта.
после
myObj.FmyCollect := myC
поле myObj.FmyCollect становится хранителем ссылки на тот же объект, на который в этот момент ссылается myC
после myC.Free объект , на который ссылается myC, будет разрушен, в то время как поле myObj.FmyCollect по-прежнему продолжает сылаться на якобы существующий объект.
Lamka (2005-09-12 16:20:00) [5]
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:08:00) [6]
> FmyCollect будет присвоена ссылка на myC или значения из
> myC будут записаны в FmyCollect
1-е
> последующее удаление myC не затронет FmyCollect?
что значит "удаление myC" ?