Рубрика «Delphi» - 13

CAD для разработки снежинок: SnowFlaker - 1
Привет всем.
Да да, это CAD, для разработки снежинок, написанный мной за пару дней.

Предисловие.

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

В статье не будет никакого процесса разработки и программирования. В ней я поделюсь с вами получившейся программой, и расскажу как ей пользоваться. Под катом много картинок.
Забрать сборку по win можно тут: sourceforge.net/projects/snowflaker/
Там же исходный код в GIT. Сборки под linux пока нет, но программа написана на fpc, и должна собираться и работать под linux-ом.
Читать полностью »

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

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

image

Читать полностью »

Здесь было много статей об универсальных Lock-free объектах, однако, для некоторых частных случаев они излишне громоздки. Мой случай как раз таким и являлся: требовалось организовать одностороннюю передачу информации от одного потока другому. Главный поток запускает рабочий, после чего он может только запросить его остановку и никак больше управлять он им не может. В свою очередь рабочий поток может уведомлять главный о своем текущем состоянии (прогрессе выполнения), а также отсылать промежуточные результаты выполнения. Получается, что требуется только передача данных от рабочего к главному потоку.

Разумеется, возможно, я изобрёл велосипед или, хуже того, велосипед с глюками. Поэтому комментарии и критика очень приветствуются!
Читать полностью »

CPU vs GPU. Distance field - 1Привет всем. Я уже однажды писал про Distance Field, и приводил реализацию «эвристическим» кодом дающую неплохую скорость: habrahabr.ru/post/186482/

Зачем он нужен?

DField можно применять:

  • Для значительного повышения качества шрифтов
  • Для эффектов например горения контура. Один из эффектов я приводил в своей предыдущей статье
  • Для эффекта «metaballs» но в 2д и для любых сложных шейпов. (возможно я когда-нибудь приведу пример реализации этого эффекта)
  • А в данный момент DField мне нужен для качественного сглаживания углов и удаления мелких деталей.

И если в первых двух случаях мы можем заранее вычислить DField, то для других эффектов нам нужно просчитывать его в реальном времени.
В статье будет рассмотрен наиболее популярный, я бы сказал классический Chamfer distance (CDA) с кучей картинок, объясняющих принцип его работы, а так же рассмотрен двухпроходный алгоритм на GPU.
Оба алгоритма реализованы в демонстрационных программах на FPC.
Читать полностью »

Данная статья является продолжением предыдущей публикации, которая была посвящена анонимным методам. В этот раз речь пойдет о примерах использования функций высших порядков и замыканий, показавшихся автору интересными.
Читать полностью »

Часть 1.
Часть 2.
Часть 3. DUnit + FireMonkey.
Часть 3.1. По мотивам GUIRunner.

Ещё в начале увлечения программированием мне нравилось работать с файлами. Работа, правда, в основном заключалась в чтении входных данных и записей результатов. Дальше была работа с БД, файлами я пользовался все реже. Максимум IniFile иногда. Поэтому задача сериализации была довольно интересной для меня.

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

image

Читать полностью »

Разработка игры в 115 кб — хаки, баги и досада - 1

В начале ноября я участвовал в 115-ом по счете конкурсе сообщества Independent Games Developers Contests (IGDC), темой которого была разработка аркадного шутера с лимитом в 115 килобайт за неделю. Под катом история разработки игры на OpenGL + Free Pascal, эксперименты с LZO, обход багов компилятора FPC для uFMOD, простейшая генерация текстур и досадный баг на видеокартах NVidia, который все испортил.

Видео, бинарник для Windows и исходный код также прилагаются — ищите в конце статьи.
Читать полностью »

На днях мне пришлось столкнуться с компонентом TTreeView. Заказчик настаивал, на привычном ему компоненте — “Дереве”, и хотел что бы приложение выглядело так же как он привык, в VCL.
Использование TTreeView в Firemonkey приложениях - 1Использование TTreeView в Firemonkey приложениях - 2

ПоэтомуЧитать полностью »

Поводом для написания статьи стал интерес к возможностям анонимных функции в Delphi. В разных источниках можно найти их теоретические основы, информацию о внутреннем устройстве, а вот примеры использования везде даются какие-то тривиальные. И многие задают вопросы: а для чего вообще нужны эти reference, какая может быть польза от их применения? Поэтому предлагаю некоторые варианты использования анонимных методов, применяемые в других языках, возможно, более ориентированных на функциональный стиль программирования.
Читать полностью »

Привет!

Понадобилось внезапно портировать программу с C# на Delphi. В программе на C# активно использовался yield. Погуглив просторы интернета в надежде не заниматься изобретением велосипеда, удалось найти реализацию yield для Win32 на базе фиберов для Embarcadero Delphi 2009 и выше, но вот беда — требовалось сделать порт под CodeGear RAD Studio для версии Delphi 2007, в которой ещё отсутствовали обобщённые типы и анонимные методы. Менять версию Delphi на более позднюю было нельзя и поэтому пришлось переписать найденную реализацию yield для более ранней версии.

Взяв исходник юнита с реализаций yield для Delphi 2009 и выше за авторством Andriy Gerasika я его переделал для Delphi 2007.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js