|
|
|
Интерфейсы и VCL
|
|||
|---|---|---|---|
|
#18+
Я правильно понимаю, что если объект не наследуется от TInterfacedObject, то он не следит за ссылками на интерфесы?.. Т.е: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2021, 15:53 |
|
||
|
Интерфейсы и VCL
|
|||
|---|---|---|---|
|
#18+
alekcvpсам фрейм в этом месте уничтожен не будет В этом месте ты получишь ошибку о нереализованных методах addRef/release. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2021, 16:13 |
|
||
|
Интерфейсы и VCL
|
|||
|---|---|---|---|
|
#18+
alekcvp Я правильно понимаю, что если объект не наследуется от TInterfacedObject, то он не следит за ссылками на интерфесы?.. alekcvp Код: pascal 1. Dimitry Sibiryakov В этом месте ты получишь ошибку о нереализованных методах addRef/release. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2021, 16:21 |
|
||
|
Интерфейсы и VCL
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ alekcvp Я правильно понимаю, что если объект не наследуется от TInterfacedObject, то он не следит за ссылками на интерфесы?.. А можно его как-то перереализовать, чтобы он начал освобождать объект?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2021, 16:45 |
|
||
|
Интерфейсы и VCL
|
|||
|---|---|---|---|
|
#18+
alekcvp А можно его как-то перереализовать, чтобы он начал освобождать объект?.. Код: pascal 1. 2. 3. 4. 5. Но лучше так не делать, т.к. в некоторых местах VCL используется приведение к интерфейсу и будет сюрприз, если объект внезапно уничтожится. Лучше написать адаптер по типу TStreamAdapter Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2021, 17:09 |
|
||
|
Интерфейсы и VCL
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ alekcvp А можно его как-то перереализовать, чтобы он начал освобождать объект?.. ... Но лучше так не делать, т.к. в некоторых местах VCL используется приведение к интерфейсу и будет сюрприз, если объект внезапно уничтожится. Да, я попытался полностью скопировать этот код из TInterfacedObject - падает с Invalid Pointer Operation где-то внутри Destroy и даже с отладочными .dcu упорно не показывает где... Адаптер слишком сложно для моей задачи, так что в итоге просто добавил в интерфейс метод для уничтожения объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2021, 17:31 |
|
||
|
Интерфейсы и VCL
|
|||
|---|---|---|---|
|
#18+
alekcvp Адаптер слишком сложно для моей задачи, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2021, 17:45 |
|
||
|
Интерфейсы и VCL
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ alekcvp Адаптер слишком сложно для моей задачи, Неправильно выразился. Не сложно, а он там не избыточен. У меня фреймы создаются в нескольких местах, а используются только в одном, причём это одно знает только про его интерфейс и ничего не знает про сам класс. Вот я и хотел, чтобы они убивались автоматом, когда ссылка обнуляется. Но в итоге решил задачу одним дополнительным вызовом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2021, 18:30 |
|
||
|
Интерфейсы и VCL
|
|||
|---|---|---|---|
|
#18+
alekcvp, Для этого достаточно указать при создании фрейма форму , куда он будет помещаться как Owner. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2021, 23:18 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2037646]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 485ms |

| 0 / 0 |
