| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Поймать изображение кнопки |
| Автор: drinkOut 18.5.2005, 00:13 | ||
| Собственно сабж: я ловлю - оно не ловится... Очень хотелось бы узнать, в чём причина...
Сообщение 'Empty Bitmap' у меня не появляется, а картинка на форме всё равно не рисуется. |
| Автор: s-mike 18.5.2005, 00:31 | ||
|
| Автор: jack128 18.5.2005, 00:40 | ||
Утечки памяти есть ;)
|
| Автор: drinkOut 18.5.2005, 00:45 |
| http://rulezman.multik.org/31.gif jack128, supreme! Пока не скажешь, плюс не поставлю! |
| Автор: jack128 18.5.2005, 00:46 |
| Bitmap.Handle - это хендл битмапа, а не канвы. Это разные объекты. |
| Автор: s-mike 18.5.2005, 00:49 | ||||
1. Создание класса внутри блока try..finally 2.
Вот про ReleaseDC и я забыл. |
| Автор: drinkOut 18.5.2005, 17:21 | ||
|
| Автор: Rennigth 18.5.2005, 17:43 | ||
ни чем... просто создание класса теоритически(я с этим не соглачен одно исключение TAdoConnection и да и конструктор своих классов легко может глючить, все по ситуации. |
| Автор: s-mike 18.5.2005, 23:29 | ||
Да прям таки ничем, если класс не будет создан в блоке try..finally в результате какой-то ошибки, то в блоке finally получится большооой AV. |
| Автор: Rennigth 19.5.2005, 10:16 | ||||
s-mike
это с чего это? ты смотрел код free?
и как это может вызвать AV |
| Автор: jack128 19.5.2005, 10:29 | ||||
а с чего ты взял, что в переменной Bitmap изначально nil будет? вот в таком коде AV не будет
а в твоем вполне |
| Автор: Rennigth 19.5.2005, 10:44 | ||||||||
jack128
все объекты по умолчанию nil
каком моем
я об этом и говорю... что все по обстоятельством но принято писать
этот код в любом случае нормально отработает, но есть ситуации когда один Create надо в try except заключать... |
| Автор: s-mike 19.5.2005, 10:52 | ||||
Никогда не надо! Это грубая ошибка! Вот представь, что в конструкторе произойдет ошибка. Тогда в переменную не будет занесен адрес класса или будет занесен ошибочный. А по умолчанию все классы не равны nil, попробуй запустить:
В переменной будет хранится адрес несуществующего класса, так что при попытке его освобождения будет серьезная ошибка. |
| Автор: Rennigth 19.5.2005, 11:24 | ||
| s-mike я привык проверять существование объекта на Assigned, ты попробуй запустить
попробуй хотябы создать TADOConnection если у проекта небыло Application.init (одит из примеров) а если у тебя класс с прооверайженным конструктором и там ошибка... |
| Автор: jack128 19.5.2005, 11:26 | ||
Rennigth Assigned проверяет на НЕ равенство nil'у. Так что писать нужно так
|
| Автор: Rennigth 19.5.2005, 11:33 | ||
| jack128 а ну да... ЦСКА форева, похмелье... бошка ватная...
забираю свои слова обратно... интерфейсы рулят(они - то nilы)... |
| Автор: Vit 19.5.2005, 15:56 | ||
А ты этого, в коде когда нибудь поставь два free подряд |