Рубрика «Free Pascal»

Немного о проектировании приложений

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

Одним из шаблонов, о котором хочется упомянуть является MVCЧитать полностью »

Неожиданно тёплый приём, оказанный публикой Хабра моему посту о самодельном компиляторе XD Pascal для MS-DOS, заставил меня задуматься. Не досадно ли, что любительский проект, которому я отдал немало сил, лежит у меня мёртвым грузом с тех самых пор, как из Windows полностью исчезла виртуальная машина DOS? Итогом размышлений стал компилятор XD Pascal для Windows. Возможно, он лишился некоторой доли ностальгического шарма и утратил возможность наивной работы с графикой через прерывания BIOS. Однако переход на Windows вдохнул новую жизнь в проект и открыл дорогу к давней мечте — самокомпиляции.

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

История с продолжением: собственный компилятор Паскаля для Windows с чистого листа - 1
Читать полностью »

Вместо предисловия

В моей недавней статье Lazarus — пишем компонент для анимации спрайтов я описал процесс создания простого компонента TImageFragment, позволяющего отображать заданный фрагмент изображения.

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

При таком подходе отдельные кадры анимации в разных проекциях размещаются на одном изображении, а компонент для отображения спрайта показывает только один выбранный фрагмент этого изображения, используя свойства OffsetX и OffsetY (смещение левого верхнего угла фрагмента изображения по горизонтали и по вертикали).

Множество таких готовых изображений можно найти в Сети — например, вот на этом сайте.Читать полностью »

Вместо предисловия

В одесской школе ученики 8-го класса на уроках информатики используют бесплатную кроссплатформенную среду разработки Lazarus (официальный сайт: www.lazarus-ide.org), внешне и внутренне очень напоминающую любимый многими Delphi, использующую версию Object Pascal под названием Free Pascal и в действительности сильно упрощающую процесс вхождения в программирование.

Но детям неинтересно писать программу для вычисления силы тяжести по непонятной им пока формуле F=mg. Практически все дети, которых я пытался учить программированию, с первого занятия хотят написать игру. К счастью, Lazarus прекрасно подходит и для написания несложных игр.

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

На самом деле, статья несколько шире – она описывает способ, позволяющий прозрачно задействовать и многие другие библиотеки (причём не только из мира Free Pascal), а InternetTools выбрана из-за своего замечательного свойства – это тот случай, когда (как ни удивительно) отсутствует Delphi-вариант с такими же широкими возможностями и удобством использования.

Эта библиотека предназначена для извлечения информации (парсинга) из веб-документов (XML и HTML), позволяя использовать для указания нужных данных как языки запросов высокого уровня, такие как XPath и XQuery, так и, в качестве одного из вариантов, предоставляя прямой доступ к элементам дерева, построенного по документу.
Читать полностью »

Друзья, все мы знакомы с кроссплатформенным инструментом быстрой разработки Lazarus.
Сегодня мы поговорим об одной сборке GetLazarus, которая, на мой взгляд, заслуживает некоторого внимания.
Это не форк, это удачная сборка, которая сразу готова к работе с еще большим Delphi-подобным внешним видом.

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

Друзья, поздравляю всех с выходом нового релиза Lazarus 1.6!
Оказывается, мы забыли посвятить этому событию отдельный пост, навёрстываем.

image

Прошло уже больше года после крупного релиза. И вот, наконец-то, после недавних двух релиз-кандидатов мы встречаем долгожданный Lazarus 1.6 с впечатляющим перечнем улучшений и исправлений.
Читать полностью »

Работая над утилитой для собственного использования столкнулся с одной «волшебной» ошибкой. Изначально я намеревался сделать программу с возможностями квайна, но этого не получилось, так как даже от строки (из Википедии):

var s:string='var s:string=;begin insert(#39+s+#39,s,14);write(s)end.';begin insert(#39+s+#39,s,14);write(s)end.

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

В какой-то момент я перепутал код выводимой программы и код программы, которую нужно вывести (ошибся в названии файла). И получил настоящий квайн. Немного допилил до более лучшего вида и пришел сюда поделится своей историей.
Читать полностью »


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