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 ответов

59 просмотров

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

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

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

Переменные типа интерфейса увеличивают счётчик ссылок на объект. Объект уничтожится, когда счётчик ссылок станет 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
Насколько я помню, то при присвоении парента меняе...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта