Сайт Романа ПарпалакаБлог20090328

Delphi 2009 и не только

28 марта 2009 года, 22:37

Я давно уже собираюсь выпустить новую версию The Game of Life, 3.6. Внес ряд полезных изменений. Проблема, которую осталось решить, как ни странно, связана с Вистой :)

Кажется, микрософты сделали так, что GDI в Висте эмулируется через DirectX (я не специалист в этом вопросе, точно утверждать не берусь). Из-за этого прорисовка через Canvas.Pixels стала в Висте жутко тормозить (по сравнению с XP). Я прекрасно понимаю, что Canvas.Pixels — сам по себе не очень быстрый способ вывода на экран. Но когда на каждом шаге меняется несколько точек, проще вызвать именно Canvas.Pixels, а не создавать отдельный буфер.

Версию 3.6 я задумал как переходную — в ней я хотел разобраться с графикой, а переписывание алгоритма расчета оставить для следующих версий. Мой приятель, просивший не упоминать его имя, помог с OpenGL. Теперь некритичная к быстродействию часть кода выводит графику через Canvas, а критичная — через OpenGL.

В ходе тестирования выяснилось, что в Висте есть еще одна проблема, которая связана, вероятно, с тем, что Виста запоминает содержимое PaintBox'а. Виста считает себя умнее всех остальных систем, в которых посылается сообщение wmpaint, и без спроса восстанавливает то, что было PaintBox'е, хотя оно уже перезаписано более свежей картинкой.

Логично предположить, что всё дело в Делфи 7. Она вообще не подозревает о существовании Висты :) Вполне возможно, что подобные ошибки уже исправлены в последней версии Делфи. Не долго думая, установил Делфи 2009. После небольших изменений кода программа скомпилировалась, но заработать отказалась из-за непонятной ошибки «Stream read error» при запуске. Более того, похожая ошибка стала возникать и в Делфи 7, правда, сообщение там было другое: «List capacity out of bounds (%d)». Эта же ошибка стала возникать и при запуске ранее скомпилированных экзешников. Я не знаю, что Делфи 2009 сделала с Вистой, что отказались работать экзешники, скомпилированные до ее установки!

Делфи 2009 — какое-то жуткое говно. Она, наконец, научилась понимать картинки PNG. Но вот с альфа-прозрачностью у нее до сих пор проблемы. Алё, Embarcadero, 2009 год на дворе. Как можно не поддерживать альфа-прозрачность? Отладчик по сравнению с седьмой версией сильно не улучшился. В программе возникла ошибка, так покажите, где она! Почему Visual Studio это умеет, а Делфи — нет?

К счастью, после удаления Делфи 2009 проблема с ошибкой «List capacity out of bounds (%d)» исчезла. Баг, связанный с обновлением PaintBox'а, исправлю каким-нибудь другим способом.

Да, и еще. Вот объясните мне, как можно пользоваться последними версиями программных продуктов и технологий, если они настолько кривые?

Добавлено: Обычно я не склонен к поспешным выводам, однако Делфи 2009 произвела на меня совсем уж удручающее впечатление :) По всей видимости, проблема с ошибкой при старте программы не связана с Делфи 2009. И, может быть, в ней можно заставить PNG работать нормально. В общем, нужно еще раз ее поставить, чтобы разобраться до конца.

Поделиться

Особенности национальных супермаркетов Ctrl Новости дня

Читайте также

Сообщение об ошибке
Не так давно на одном компьютере переустанавливал Windows.
2007

Миниатюры на PHP
В ходе разработки и обслуживания сайтов часто возникает необходимость в создании миниатюр — уменьшенных копий изображений.
2007

Комментарии

#1. 29 марта 2009 года, 00:22. Ярослав пишет:
Перепишите на C# с использованием WPF в Visual Studio 2008 :-)
#2. 29 марта 2009 года, 12:57. пишет:
Было бы у меня время экспериментировать с C# и WPF :)

На самом деле, есть код, который не так уж плох. Хотелось бы застравить его работать в Висте путем не очень больших затрат времени и сил, вот и всё. Переписывать ту же самую программу на другом языке смысла, наверное, нет.
#3. 29 марта 2009 года, 22:10. пишет:
Вы умный парень, валите с Delphi. Все валят, потому что будущее этой среды слишком призрачно и большинство до сих пор сидит в 7-ке, как и вы. Не будете же вы все время сидеть в 7-й Delphi? Вот обзор 2009-ой Delphi http://www.flenov.info/favorite.php?artid=17 который отбил у меня желание даже ставить ее. Я думаю, что будущее Delphi остановилось на 7-й версии.
#4. 30 марта 2009 года, 18:00. пишет:
Иногда нужно быстро написать программу, причем для себя, а не для распространения. Делфи для этих целей подходит идеально, переходить на что-то другое не хочется :)
#5. 15 апреля 2009 года, 07:48. Сергей пишет:
Незнаю почему уж у вас не получилось загрузить PNG с альфа каналами, но у меня все работает идеально. Да и Delphi 7 не сложно научить работать с PNG. Если интересно то http://delphidevelop.ru/publ/12-1-0-174.

Кстати в википедии прочитал про CodeGear RAD Studio 2009, что "В данной версии также реализована поддержка таких технологий .NET, как WinForms, WPF, ADO.NET, ASP.NET и LINQ. Меня заинтересовал именно WPF, странно но я не нашел.
#6. 18 июня 2009 года, 00:47. пишет:
Почему CodeGear вроде уже Embarcadero
http://www.bizsoftware.ru/catalog/index.ph … dor_ID=266

Оставьте свой комментарий


Формулы на латехе: $$f(x) = x^2-\sqrt{x}$$ превратится в $$f(x) = x^2-\sqrt{x}$$.
Выделение текста: [i]курсивом[/i] или [b]жирным[/b].
Цитату оформляйте так: [q = имя автора]цитата[/q] или [q]еще цитата[/q].
Других команд или HTML-тегов здесь нет.

Записи