В жизни каждого мужчины наступает момент, когда, окинув взглядом свежую мировую статистику по использованию операционных систем, он понимает, что пришло время больших перемен. Дом, работу и жену при этом менять вовсе не обязательно, а вот попробовать охватить аудиторию, которая заметно выросла за последний десяток лет, все же стоит. Речь пойдет о разработке на Delphi для macOS (в девичестве OS X) и о том, как мы в компании TamoSoft выбирали инструменты, осваивали новое, учились, подрывались на минах и получали удовольствие от процесса.
Читать полностью »
Рубрика «Delphi» - 8
Delphi со вкусом Cocoa
2017-01-19 в 9:02, admin, рубрики: Delphi, FireMonkey, fmx, mac os x, Разработка под OS XVCL, избавляемся от мерцания, раз и навсегда
2017-01-06 в 16:05, admin, рубрики: Delphi, make delphi great again, vcl, буфер, дельфи, мерцание, разработка под windows, метки: дельфи
Delphi и C++Builder разработчики, использующие VCL не по наслышке знают о вездесущей проблеме мерцания контролов.
Мерцание происходит при перерисовке, вследствие того, что сначала отрисовываеться фон компонента, и только потом сам компонент.
И если в случае с наследниками от TWinControl частичным решением проблемы является установка свойства DoubleBuffered в True, что заставляет контрол отрисовываться в буфере(однако DoubleBuffered работает тоже не идеально, к прим.: контрол перестает быть прозрачным), то в случае с TGraphicControl решение с DoubleBuffered просто невозможно, из-за отсутствия у TGraphicControl окна, установка же DoubleBuffered в True у родителя не помогает, из-за того что отрисовка вложенных TGraphicControl-ов происходит уже после прорисовки родителя в буфере.
Обычно остается только одно — смириться с мерцанием, и максимально упростить отрисовку для минимизации эффекта, или использовать по возможности исключительно TWinControl-ы, что не всегда возможно и удобно.
Однажды намучившись с мерцанием, я не выдержал и решил решить эту проблему, раз и навсегда!
Как мне удалось решить проблему?Читать полностью »
Аналог .Net Entity Framework в Delphi посредством RTTI. Часть первая, вступительная
2016-12-23 в 12:25, admin, рубрики: Delphi, RTTIПосле того, как в Embarcadero оживили Delhi, я вернулся с разработки на C# к более привычному инструменту. Серьезно порадовало, что большинство синтаксических возможностей, классов и различных «рюшечек» волшебным образом переехало из шарпа. К сожалению, такая приятная возможность, как отображение выборки из базы данных на коллекции классов осталась за скобками.
В своих проектах мы часто сталкиваемся с необходимостью алгоритмической обработки различных выборок, реализация которых невозможна средствами SQL. Для каждой выборки создавался класс и каждый раз, когда нужно создать новую выборку, приходилось проводить абсолютно одинаковые движения, с той разницей, что заполнять поля классов приходилось ручками.
Раскинув мозгом и оценив возможности RTTI, трудозатраты и наличный запас бубнов, у нас получился список «хотелок» для работы с БД, которых не хватает в нашей скучной жизни:
- Автоматическая генерация классов по структуре таблиц разрабатываемой БД.
- Заполнение списков классов данными из таблиц.
- Для реализации создания классов будет не лишним считывать структуру таблиц БД.
- Имея на руках структуру БД можно автоматизировать:
- Сравнение структуры существующей БД с эталонной для предупреждения ошибок при обновлении разрабатываемого ПО у конечного пользователя;
- Формирование «контракта БД», содержащего в себе константы названий таблиц, полей, хранимых процедур и функций;
- Создание классов из пп. 1. с учетом связей между таблицами.
- Создание «оберток» для вызова хранимых процедур и функций.
И при правильной реализации и аккуратной работе вдалеке начинает маячить возможность кроссплатформенной работы между различными типами SQL серверов.
Читать полностью »
МСУИИ AmigaVirtual — универсальный ИИ для каждого
2016-12-05 в 6:53, admin, рубрики: AmigaVirtual, Delphi, искусственный интеллект, машинное обучение, МСУИИ, открытые исходники, Программирование, метки: МСУИИ Привет всем любителям и исследователям искусственного интеллекта! В данной статье я хотел бы рассказать об интересном проекте: модульной системе универсального искусственного интеллекта (МСУИИ) «Amiga Virtual» (AV, «Виртуальная Подружка»). Я расскажу об основных принципах её работы и опишу некоторые детали реализации, а самые любопытные смогут исследовать все исходные коды. Разработка ведётся на Delphi, но модули теоретически могут быть написаны на любом ЯП. Данная система будет интересна как конечным пользователям чат-ботов и связанных с ними систем, так и разработчикам ИИ — ведь на её основе можно разработать практически любой тип ИИ.
Читать полностью »
История языков программирования: Delphi — больше, чем просто язык
2016-11-30 в 7:34, admin, рубрики: Delphi, object pascal, графические интерфейсы, история языков программирования, перспективы, разработка под windows
С Delphi обычно ассоциируется среда разработки приложений на основе языка Object Pascal, разработанного фирмой Borland. Этот язык является наследником Turbo Pascal с объектно-ориентированными расширениями, который в свою очередь ведет свою историю от «чистого» Pascal, созданного Никлаусом Виртом в 1970 году.
Впоследствии, в 2002 году, разработчики из компании Borland официально поставили знак равенства между языками Delphi и Object Pascal.Читать полностью »
Персона. Андерс Хейлсберг – создатель Turbo Pascal, Delphi и C#
2016-11-07 в 15:38, admin, рубрики: borland, C#, Delphi, microsoft, turbo pascal, Карьера в IT-индустрии, персона, разработка по, управление разработкой, языки программирования
«Я написал огромное количество полезных программ. И совсем немного бесполезных»
У некоторых людей есть потребность создавать что-то новое. Когда эта потребность реализуется в полной мере, появляются произведения искусства, научные открытия, прорывные технологии. Таким человеком является Андерс Хейлсберг, создатель Turbo Pascal, Delphi и C#.
Для многих студентов ВУЗов Turbo Pascal до сих пор остается первым языком, с которого начинается знакомство с программированием. В свое время он был своеобразным прорывом в разработке программного обеспечения. Недаром «в народ» пошел не Pascal, а именно Turbo Pascal.
Однако Хейлсберг на этом не остановился. Благодаря его неугасающей потребности создавать новое появились Delphi и С#. Поэтому для многих Андерс является одним из «супергероев» ИТ-индустрии.Читать полностью »
Выбор СУБД для мобильного Delphi-приложения
2016-10-04 в 7:00, admin, рубрики: Delphi, Firebird/Interbase, FireDAC, FireMonkey, IBLite, разработка мобильных приложенийДанная статья написана по мотивам – мотивам разработки мобильного приложения, недавно вышедшего на платформах iOS и Android. Это событие можно было бы назвать заурядным и мало кому интересным, если бы не одно большое и несколько незначительных «но»: вся разработка (включая сервер) велась на Delphi, а в качестве СУБД, как ни странно, задействована совсем не SQLite. Автор, безусловно, понимает, что на текущий момент уже существуют мобильные Delphi-приложения, включая доступные в официальных магазинах, однако не наблюдает обилия русскоязычных публикаций, призванных, как минимум, предостеречь читателей от ошибок, сделанных разработчиком таких проектов. Написанное же здесь преследует цель помочь тем, кто сейчас выбирает СУБД для своего творения, либо уже остановился на каком-то варианте, но желает убедиться в правильности своего решения.
Прежде чем начать, необходимо дать краткое представление о разработанном приложении – это список покупок, имеющий в своём запасе некоторый уникальный функционал. Если кто-то сам уже пользуется (или пользовался) одним из многочисленных аналогов, то сейчас мог скептически хмыкнуть – мол зачем ещё один, и так есть из чего выбрать, на что можно лишь посоветовать продолжить чтение, чтобы ознакомиться с его принципиальной особенностью.
Читать полностью »
Input lag во время рендеринга и как его побеждать
2016-09-01 в 9:08, admin, рубрики: Delphi, DirectX, input lag, путешествие в костыляндию, разработка игр, метки: renderingПривет всем.
Многие из вас знакомы с лагом ввода. Это бывает, когда вас в очередной раз убивают в компьютерной игре, и вы кричите: «Ну я же нажал блок/атаку/уворот». Ну а затем джойстик летит в стену. Знакомо? Происходит это потому, что между нажатием клавиш и появлением результата на экране проходит значительное время. Фактически, когда вы смотрите в экран — вы видите прошлое состояние, которое может абсолютно не отражать действительность.
Если вы разрабатываете собственную игру, или вообще занимаетесь рендером, и хотите уменьшить задержки ввода, то крайне советую заглянуть под кат.
Читать полностью »