|
|
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
alekcvp, Да хватит пургу гнать. В команде всякое бывает. Классы могут крашитья по разным причинам. Освобождение тоже может происходить спонтанно из за освобождения логики определённого юнита хаотичным образом, из за порядка подключения. Да куча вообще есть подводных комней, почему лучше удалить с пометкой указателя на null Вот один пример - порча памяти приложения Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Данный код хаотично начинал крашить обращения к компонентам, очень долгое время непонятно было почему приложение вылетало. Подправив его вот так, у нас перестали крашиться обращения к классам хаотичным образом Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 02:59 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Надо мыслить на много шире. Приведённые примеры не означают что будет именно так. Так как в действительности - в реальных условиях, я бы даже сказал в суровых. Детская фантазия не всегда поможет. Постоянно может возникать что - то, о чём вы даже не могли и предположить. Так что Я не могу понять, почему обнуление 1 указателя функцией FreeAndNil с последующими возможными ссылками, и конечным освобождённым объектов - для вас какой - то ужас. Я могу предположить что у вас просто нехватка реального опыта с разными проблемами в настоящих проекта (Не подделках в детском саду) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 03:04 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Постоянно может возникать что - то, о чём вы даже не могли и предположить. Это говорит о недостатке опыта вкупе с тягой к экспериментам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 03:09 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
rgreat, Шаблоньюзер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 03:16 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Постоянно может возникать что - то, о чём вы даже не могли и предположить. Так что Я не могу понять, почему обнуление 1 указателя функцией FreeAndNil с последующими возможными ссылками, и конечным освобождённым объектов - для вас какой - то ужас. Когда в приложении происходит хрен знает что и вы вообще не представляете что там и где освобождается, то проблема не во FreeAndNil, а в архитектуре приложения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 03:59 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
alekcvp, rgreat ВсеРазумный в данном случае ох как прав когда у вас под контролем будет 7-8 проектов где каждый заходит и топчет, тогда начнёте дуть на воду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 09:22 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Разница в том, что вы зачем-то используете Utf8ToUnicode куда надо передавать какие-то указатели... А мы работаем с высокоуровневым кодом, и делаем это проще через Код: pascal 1. 2. Современная дельфи уже давно в некоторых местах позволяет забыть об указателях... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 14:53 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
X-Cite, Данный код, кто - то вытянул из Delphi какой - то версии. В последней версии, вроде как стоит Код: pascal 1. 2. 3. Проблема не в Utf8ToUnicode, ибо она была ликвидирована в первую очередь по такой же причине. Спойлер - проблема не исчезла. Код: pascal 1. В оригинале, в Delphi коде делался inc на переменную P дабы разграничить секции. И каким - то образом, двигался не Pointer указателя, а именно сам UnitNames. Код: pascal 1. Хотя, в новой реализации функция ReadShortString тоже двигает указатель. Странно это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 15:18 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Не вижу свзи между безопастностью и freeandnil. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 17:56 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
rgreat, не видишь, предложи замену ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 21:02 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Код: pascal 1. 2. 3. 4. 5. Ошибки обработать по желанию/необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 21:10 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. Объект обнулён в любом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 23:00 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
rgreat kealon(Ruslan), Код: pascal 1. 2. 3. 4. 5. То есть, если в программе пятьсот мест, где нужно подобным образом освободить объект, Вы пятьсот раз напишете этот код? Или же таки оформите процедуру и вызовете её пятьсот раз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 23:08 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
softwarer, Как я уже сказал я крайне редко обнуляю указатели как таковые ибо считаю это непрямым и как следствие ненадежным методом контроля состояния объекта. Ссылок на объект может быть больше одной. У меня в 99% случаев nil в указателе может быть только до иннициализации объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 23:14 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Объекты я убычно убиваю вместе с бизнес логикой и всеми ссылками, которе на него ссылаются. Так проверять на валидность ничего и не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 23:23 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
rgreat Как я уже сказал я крайне редко обнуляю указатели как таковые Вы не ответили на вопрос. Руслан Вас спросил, Вы предложили метод, я задал вопрос про этот метод. В нём нет ничего про крайне редко или крайне часто, в нём только про методику использования предложенного Вами метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 23:34 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Как показала практика, для обнуление объекта try не нужно. И со всеми задачи справляется FreeAndNil А если нужен try то и FreeAndNil со всем справляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 23:59 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Обнуление переменной до Destroy делается совсем не для обработки исключений. Исключений в деструкторе вообще быть не должно. Это делается, чтобы во время уничтожения объект был недостижим через ссылку, потому что он находится уже в неконсистентном состоянии. Для многих ситуаций это критически важно, и если ссылку не обнулить _до_ Destroy программа будет глючить. Конечно, в первую очередь это имеет смысл для интерфейсов - обнуление интерфейсной переменной работает так-же как FreeAndNil - для объектов обнуляемая ссылка не факт, что последняя и объект может быть достижим через другие ссылки. Но тем не менее - это принципиальный момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 00:13 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Maxim Rusov, А кто сказал, что обнуление переменной до Destroy делается для обработки исключений? Эк, вас всех, парни, однако, разобралО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 01:43 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Vlad F, Раз 22126803 Два 22127835 В общем тут каждый друг друга путает, наводит кипишь на пустом месте. И из маленькой пылинки раздувает опухоль со слона. Мифы создают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 01:51 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Санитары, как вижу, не справились. Вызывайте уже пожарных что-ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 01:54 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
softwarer, Еще раз. Метод вообще на мой взгляд не нужен, по этому на мой обсуждать какой из них лучше это не.более чем разминка для мозга. Такое мнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 02:20 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Maxim Rusov Исключений в деструкторе вообще быть не должно. . Я у себя в сервисах try-ями обкладываю вообще все. Даже то что сломаться якобы не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 02:22 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
rgreat, Я буду прост. - Это диагноз. Vlad F Санитары, как вижу, не справились. Вызывайте уже пожарных что-ли. Переборщили с вами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 02:42 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
В общем кого - то надо отправить повторно изучать Try-Except-on&do ибо я сейчас пытаюсь вызвать исключение в конструкторе с выкидом в деструктор, и в нём же созданием исключения разными способами. И Try-Except-on&do справляется с отловом исключения через овер 100 функций и классов, находя место исключения с использованием разного в том числе и FreeAndNil c пометкой EInvalidPointer с сообщением : Invalid pointer operation Проблем нет, кривизна функции FreeAndNil не доказана. А польза 100% тем более это inline и не является функцией в рабочем коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2020, 02:53 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39954457&tid=2038337]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 408ms |

| 0 / 0 |
