|
|
|
IDropTarget "глушит" Exception
|
|||
|---|---|---|---|
|
#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. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. И заметил некоторую особенность: Если не обрабатывать исключение (убрать try ... except в методе TForm1.Drop), то оно и не отобразится. Кто может объяснить для чего это сделано, и со всеми ли интерфейсами это так, просто раньше не обращал внимания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 07:05 |
|
||
|
IDropTarget "глушит" Exception
|
|||
|---|---|---|---|
|
#18+
Stranger484оно и не отобразитсяЕсли я правильно понял, то под термином "отобразится" подразумевается появление окна с сообщением об ошибке. В обычной для VCL ситуации с необработанным исключением оно передается в конечном итоге в Application.HandleException, где и решается вопрос с показом окна с ссобщением об ошибке. Но в случае D&D исключение ловиться внутри COM системы, которая не отображает никаких окон в таких ситуациях. Но практика передачи исключений в сторонний код крайне не правильная. Имеем как минимум утечку памяти. При передаче интерфейсов в сторонний код лучше использовать конструкции вида Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 08:53 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2040267]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
148ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
22ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 435ms |

| 0 / 0 |
