169 похожих чатов

Function TDCLForm.AddGrid(ParentControl: TWinControl; SurfType: TDataControlType; Query: TDCLQuery; Data: TDataSource):

IDCLGrid;
var
grid: IDCLGrid;
begin
grid:=TDCLGrid.Create(FIDCLMain, FNameSpace, Self, ParentControl, SurfType, Query, Data);
FGrids.Add(grid);
Result:=grid;
end;

Что будет с grid? Точнее не схлопнется ли объект совсем при выходе из метода?
Подсказка: I и T.

18 ответов

36 просмотров

Ну так ты же ссылку отдаешь наружу

а почему схлопнется если ссылка на объект ушла дальше и в список?

Если ты ее там используешь, то все ок

Переменные типа интерфейса увеличивают счётчик ссылок на объект. Объект уничтожится, когда счётчик ссылок станет 0

Евгений- Автор вопроса
Kass
а почему схлопнется если ссылка на объект ушла дал...

Хорошо. Тогда как отловить ситуацию. Если два раза вызвать форму которая создаётся из другой формы и на ней (дочерней форме) создаётся класс у которого в наследниках TComponent и некий интерфейс. После вызовов, если закрыть родительскую форму, то деструктор компонента падает с недопустимым чтением откуда то из под земли.

Евгений
Хорошо. Тогда как отловить ситуацию. Если два раза...

Нельзя использовать наследник TComponent как интерфейс

Евгений- Автор вопроса
Hemul GM
Нельзя использовать наследник TComponent как интер...

Не как а совместно. Так: TDCLGrid=class(TWinControl, IDCLGrid)

Евгений
Не как а совместно. Так: TDCLGrid=class(TWinContro...

Главное помни, что объект уничтожится родителем, а не когда счётчик ссылок уменьшится

Hemul GM
Главное помни, что объект уничтожится родителем, а...

или родителем, или владельцем, если это компонент

Евгений- Автор вопроса
Hemul GM
Главное помни, что объект уничтожится родителем, а...

Да, явно не уничтожаю. Главное что бы не раньше.

Евгений- Автор вопроса
Handatros
или родителем, или владельцем, если это компонент

А тут подробнее, у меня .Parent и .Create(PO); разные!

Евгений
А тут подробнее, у меня .Parent и .Create(PO); раз...

Тогда твой объект уничтожится с парентом

Евгений
А тут подробнее, у меня .Parent и .Create(PO); раз...

ну вот кто раньше уничтожается - потянет за собой все компоненты

Handatros
ну вот кто раньше уничтожается - потянет за собой ...

Насколько я помню, то при присвоении парента меняется owner на парент

Евгений- Автор вопроса
Hemul GM
Насколько я помню, то при присвоении парента меняе...

вроде бы нет, глянул код, только если совсем внутри где-то

Похожие вопросы

Обсуждают сегодня

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
29
объясните, я прада не понимаю. зачем в перле нужен аниивент? кому он пригодился в действительно нагруженных проектах?
nerv
30
Никто случаем не знает, как по-хорошему делается дозапись текста в edit на винапи?
The Bird of Hermes
25
А какие у этого try практические плюсы перед eval?
Oleg Volkov
41
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
Hi, I installed mysql 8 like this: wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.11-1_all.deb sudo dpkg -i mysql-apt-config_0.8.11-1_all.deb sudo apt-get install mysq...
Liran
1
Ребзя, а кто-нибудь делал на сайте Турбо Страницы Яндекса? Какую-то пользу они дают или нет? Приносят ли трафик?
Андрей [aharito] Харитонов
20
option casemap:none includelib kernel32.lib externdef ExitProcess : near .data? x1y1array real4 ?, ?, 0, 0 x2y2array real4 ?, ?, 0, 0 .code DLLEntry proc in...
Юрий
2
Скажите, либо я тупой, либо непонятно что. Представьте что в регистре AX = 7FFF (в десятичной системе это число 32767), а в регистре BX = 0FFF (в десятичной системе это -1). У...
Rusplay
19
Карта сайта