Сайт Романа ПарпалакаБлог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 Новости дня

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

Программы
The Game Of Life Реализация игры «Жизнь».

Миниатюры на PHP
В ходе разработки и обслуживания сайтов часто возникает необходимость в создании миниатюр — уменьшенных копий изображений.
2007
Первый релиз S2
Я доделал сайт движка S2 и сделал самый первый релиз — выпустил альфа-версию.
2010
Неудачная попытка включить JIT в PHP
Обновил на этом сервере версию PHP с 7.4 на 8.2.
2023

Комментарии

#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-тегов здесь нет.

Записи