Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Версия 2.54 [Delphi, Windows]


Страницы:   1 2

Vladimir Kladov ©   (2007-02-25 20:14:00) 

Новости от 25 февраля 2007 (KOL & MCK v2.54)

[-]
ASM
Метод TBitmap.Convert2Mask (asm-версия) исправлен для случая 256 цветов (pf8bit).

[-]
MCK
Удалены дублирующие присваивания свойству Name (для символа USE_NAMES) для некоторых объектов (наследников TKOLObject). Присваивание свойству Name для TKOLDataModule исправлено (объект сохраняется в списке самого объекта, а не в  Applet, т.к. он разрушается после разрушения объекта Applet и финальная очистка имени приводила к краху приложения на завершении).

Не в ту тему сначала отправил.


Vladimir Kladov   (2007-03-16 20:40:00) [21]

Вопрос - зачем. Чтобы ресурсы освоюодить? Система завершается, все ресурсы и так будут освобождены, даже в 9х. В NT так вообще достаточно завершить приложение, и все ресурсы освободятся максимально быстро и эффективно. Документ сохранить? Далеко не всем программам это нужно. А если нужно, я уже решение указал. Назначаете обработчик, который даже ничего не делает. И все.

Если 10 байт нужны 10% программ, то по правилам KOL, за добавление этих 10 байт отвечает программист. Чтобы остальные 90% программ были на 10 байт короче.


AndreyRus   (2007-03-15 18:53:00) [22]


> Код открыт, смотрите, что там еще делается.

Посмотрел. На мой взгляд - это неправильный подход с точки зрения статистики использования обработчика "WM_QUERYENDSESSION". Он нужен далеко не всем, а вот вызов деструктора программы при завершения работы операционной системы нужен очень даже часто. Очень многие разработчики программ уповают на то, что если они назначили обработчик уничтожения программы - "onDestroy", то он должен вызываться при всех возможных способах завершения программы, кроме жеского "терминирования" процесса диспечером задач.


D[u]fa   (2007-03-15 18:28:00) [23]

Vladimir Kladov, так может добавить их? =)
10 байт не так много ведь..


Vladimir Kladov   (2007-03-15 17:30:00) [24]

> Процедура обработки WM_QUERYENDSESSION занимает 134 байта.
А чего так много... Это ведь просто сравнение и переход. Должно быть байтов 10.

Код открыт, смотрите, что там еще делается.


Vladimir Kladov   (2007-03-15 17:22:00) [25]

Защитный диапазон ставится в несколько строк кода и один таймер. Если для вас действительно это актуально.

OnMouseMove срабатывает регулярно, если курсор находится в окне. Так работает Windows. Можете просто завернуть мышь в тряпочку, перевернуть вверх ногами и положить на кусочек поролона, обработчик будет срабатывать.

Так что если какое-либо событие посылается виндой дважды, это совсем не должно быть причиной для протеста. Может быть, конечно, дело в KOL, но для этого события что-то сомнительно (тем более разные значения).


AndreyRus   (2007-03-15 15:59:00) [26]


> Процедура обработки WM_QUERYENDSESSION занимает 134 байта.

А чего так много... Это ведь просто сравнение и переход. Должно быть байтов 10.


Barloggg   (2007-03-13 18:03:00) [27]

отрицательных? нет.
скорее это вызывает недоумение. и если с мышью это понятно ибо мой мышь от вибрации всех систем охлаждения довольно неспокойно лежит на столе, то со скроллбаром это загадочно.

а еще забавен тот факт что правильное значение SbPosition иногда приходит именно со вторым сообщением (когда ползунок упирается в планку).
а это знаете ли шкала масштаба. а картинку масштабировать бывает напряжно почем зря.
теперь везде стоят флажки, но недоумение все равно осталось.

это типа винда перестраховывается? :)


Vladimir Kladov   (2007-03-13 17:37:00) [28]

Хоть 20. Ваш код не должен зависеть от количества таких вызовов. Например, OnMouseMove срабатывает регулярно, даже если мышь никуда не движется. У вас не вызывает это отрицательных эмоций?


Barloggg   (2007-03-13 11:04:00) [29]

гм. а чего это событие onSbScroll срабатывает дважды при движении ползунка на TScrollBar?


Vladimyr   (2007-03-05 22:27:00) [30]

+1 :)


Vladimir Kladov   (2007-03-02 07:57:00) [31]

Процедура обработки WM_QUERYENDSESSION занимает 134 байта. Этим и хуже. По крайней мере половина программ работают не с документом, который редактируют, а просто исполняют какой-нибудь сервис, например, сидя в трее. И им напрочь не надо ничего особого делать по завершении работы. Если надо, ставите обработчик, и в нем Form.Close - самый простой путь получить свои OnDestroy, OnClose и т.д.


AndreyRus   (2007-03-01 22:48:00) [32]


> Чем завершение работы хуже сочетания alt+f4???

+1


homm   (2007-03-01 22:15:00) [33]

> Далеко не все приложения по завершении работы системы обязательно
> должны контролировать этот факт, и что-то при этом специальноеделать.
Насколько я понимаю речь как раз о том что нужно делать что-то не спецально, а как раз стандартно. Что-бы поставив обработчик OnDestroy программист мог быть уверен что он сработает при любой ситуации, когда программа коректно выгружается. Чем завершение работы хуже сочетания alt+f4???


Vladimir Kladov   (2007-03-01 17:35:00) [34]

У Applet'а есть OnQueryEndSession. Ставите свой обработчик, и какие проблемы. Далеко не все приложения по завершении работы системы обязательно должны контролировать этот факт, и что-то при этом специальное делать.


ANTPro   (2007-03-01 14:47:00) [35]

> [4] AndreyRus   (01.03.07 13:53)
> и при завершении работы операционной системы (WM_QueryEndSession)
> . И это логичное и правильное поведение обработчика - onDestroy

+1


AndreyRus   (2007-03-01 13:53:00) [36]

Я предполагаю, что на эти грабли будут наступать очень многие, особенно те, кто ранее использовал VCL, где обработчик формы - onDestroy срабатывал и при обычном завершении работы приложения (alt+F4) и при завершении работы операционной системы (WM_QueryEndSession). И это логичное и правильное поведение обработчика - onDestroy. Я совершенно случайно обнаружил эту особенность поведения КОЛ. Хорошо, что в обработчике не использовалось критического finally. А ведь это могло привести к большим неприятностям...

> Всем делать этот обработчик - противоречит принципу "только минимум необходимого кода".
Не думаю, что обработчик события "WM_QueryEndSession" и последующий вызов onDestroy добавит много кода, вероятнее всего лишь десяток байт :)


Vladimir Kladov   (2007-02-28 20:08:00) [37]

Нет ошибки. Если вы считаете, что вам нужна такая обработка, устанавливаете соответствующий обработчик. Всем делать этот обработчик - противоречит принципу "только минимум необходимого кода".


AndreyRus   (2007-02-28 13:41:00) [38]

Ошибка работы обработчика события завершения работы операционной системы не исправлена? :)


MTsv DN   (2007-02-26 14:31:00) [39]

Обновление доступно на http://www.kolnmck.ru


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо