Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
rgreat, зачем мне Assigned если я буду уверен, что там всё хорошо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2021, 20:19 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan) rgreat, зачем мне Assigned если я буду уверен, что там всё хорошо? "Хорошо" - это 100% уверенность в том что по указателю не может быть мусора. Только либо живой объект либо nil. Если 100% уверенности в таком нет, то и Assign использовать никак нельзя. Разве что так: Код: pascal 1. 2. 3. 4. 5. 6. Но тут и assign-то нужен только для того что бы тормозило меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2021, 20:42 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
X11 после Free остается ссылка Тебе не всё равно что там останется, если после вызова деструктора ссылка на сам интерфейс будет невалидной?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2021, 23:04 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
В методах такая фишка с автоуничтожением бесполезна, как по мне -- там у программиста полный контроль. А вот в сложных схемах, где создание и уничтожение разделены во времени и месту -- может пригодиться. Например, я аналог такого объекта использовал для сборки и корректного уничтожения созданных ресурсов при завершении/закрытии приложения, когда оно может быть завершено в любой момент, а проверять вручную каждый ресурс накладно/муторно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2021, 23:48 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
А вообще, есть одна задача, где автоуничтожение могло быть полезно (если натянуть сову на глобус): если у нас есть список объектов, но при этом часть из них должно быть уничтожено (к примеру, мы туда копии/временные значения помещаем). Иногда встречалось подобное, решалось созданием отдельного списка для хранения временных объектов, который потом и уничтожался. Пример: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 00:02 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
DmSer TSmartHolder - это простейший рекорд с единственным полем (интерфейсная ссылка). Ну и зачем тебе трёхколёсный цирковой велосипед? 16620568 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 00:04 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
JayDi В методах такая фишка с автоуничтожением бесполезна, как по мне Наоборот. Она полезна примерно в той же степени, что и исключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 00:06 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
rgreat "Хорошо" - это 100% уверенность в том что по указателю не может быть мусора. Только либо живой объект либо nil. Ну, если кто-то программирует без подобной уверенности, он... рисковый чувак с тягой к гомосексуальным контактам, назовём так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 00:07 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
встречалась минимум пара реализаций (без пруфов), но... "запас карман не тяготит"(c) - DmSer могу это оформить на своём аккаунте в гитхабе в виде отдельного модуля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 05:58 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
rgreat X11 после Free остается ссылка не зря ведь придумали FreeAndNil Код: pascal 1. 2. 3. 4. По идее Assigned(o) вернет True А не надо так делать. Вообще с Assigned надо быть очень аккуратным и точно знать как работает то что туда передаешь. Ибо если не уверен на 100% что в o может быть либо живой объект либо nil то Assigned применять вообще нельзя. а как жеж тогда проверить существование объекта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 08:24 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
alekcvp X11 после Free остается ссылка Тебе не всё равно что там останется, если после вызова деструктора ссылка на сам интерфейс будет невалидной?.. в том-то и дело, что при повторном использовании не все равно - надо знать и быть уверенным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 08:25 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
Такой код мне кажется более читабельным: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. Src: https://forum.lazarus.freepascal.org/index.php/topic,37524.msg252351.html#msg252351 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 09:22 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
И что бенчмарк показывает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 09:25 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
wadman, вот только контроль типов исчезает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 09:32 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
Тоже добавлю свой вариант, банальный. Сахара не прикручивал, т.к. особо и не понадобилось пока Код: 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. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2021, 10:42 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
Выложил на github исходники TSmartHolder. На мой взгляд - очень удобная и надежная штука. Отлаживал только методы RegObj, FreeObj и Clear. Надеюсь и остальное всё работает. В последние пол года я в своих проектах (на работе) практически не использую try..finally для контроля уничтожения объектов. Стараюсь использовать TSmartHolder. Скорее всего производительность будет чуть хуже, чем при try..finally, зато работать в коде, не замусоренном try..finally, намного приятнее. Исходники получились очень простые, 300 строк, из них 100 - это реализация FastStringReplace, скопипасченная отсюда . Для новых версий Delphi она разумеется не нужна, там и обычный StringReplace is very fast! Пример использования: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2021, 21:05 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
DmSer> Стараюсь использовать TSmartHolder Я код не читал, но что именно он делает - тупо уничтожает все ссылки в деструкторе? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2021, 22:08 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
В новых средах удобно вот так: TArray<TBitmap> чистка памяти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2021, 22:39 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
makhaon, Рекорды не всегда удобны, к сожалению. Те же сеттеры в пропертях не умеют нормально работать с рекордами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2021, 23:02 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
rgreat, не панацея, спорить не буду. однако местами очень удобны. к слову из фишек в отличие от интерфейсов гарантируют финализацию всего даже при исключениях в финализаторах. то есть полноценная замена лестниц try/finally. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2021, 23:22 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам DmSer> Стараюсь использовать TSmartHolder Я код не читал, но что именно он делает - тупо уничтожает все ссылки в деструкторе? Хранит интерфейсную ссылку ISmartHolder. Плюс предоставляет несколько удобных методов для создания типовых объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2021, 23:42 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
makhaon В новых средах удобно вот так: TArray<TBitmap> чистка памяти А что будет, если один такой рекорд скопировать в другой рекорд? Потом объект по 2 раза будет уничтожаться и ещё плюс утечка будет? Тогда нужно и операцию присвоения переопределять. Граблей, чувствуется, будет не мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2021, 09:49 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
DmSer, операция присвоения переопределяется, если нужно. ну и вообще надо поглядывать за записями. а так то очень удобно, переписал у себя большинство try/finally лестниц в подобном стиле. более того, так удобно не только создавать/разрушать инстансы, но и работать с любыми другими глобальными переменными/экземплярами. я так, например, извлекаю и возвращаю в пулл коннекты к базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2021, 16:17 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
makhaon DmSer, операция присвоения переопределяется, если нужно. ну и вообще надо поглядывать за записями. а так то очень удобно, переписал у себя большинство try/finally лестниц в подобном стиле. более того, так удобно не только создавать/разрушать инстансы, но и работать с любыми другими глобальными переменными/экземплярами. я так, например, извлекаю и возвращаю в пулл коннекты к базе. Насчёт пулов к БД - не уверен, что так правильно. Даже в C# работа с ресурсами выполняется в рамках отдельного блока (using). Всегда понятно, в какой момент закроется подключение / датасет / файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2021, 16:30 |
|
||
|
Автоматическое уничтожение объектов
|
|||
|---|---|---|---|
|
#18+
DmSer makhaon DmSer, операция присвоения переопределяется, если нужно. ну и вообще надо поглядывать за записями. а так то очень удобно, переписал у себя большинство try/finally лестниц в подобном стиле. более того, так удобно не только создавать/разрушать инстансы, но и работать с любыми другими глобальными переменными/экземплярами. я так, например, извлекаю и возвращаю в пулл коннекты к базе. Насчёт пулов к БД - не уверен, что так правильно. Даже в C# работа с ресурсами выполняется в рамках отдельного блока (using). Всегда понятно, в какой момент закроется подключение / датасет / файл. У меня тоже понятно. Как из области видимости вышло - так и закрылось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2021, 05:08 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40072346&tid=2037300]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 16ms |
| total: | 171ms |

| 0 / 0 |
