Все потоки
Поиск
Написать публикацию
Обновить
-2.1

Delphi *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Работа с разными единицами измерения одинакового типа и их конвертация

Время на прочтение3 мин
Количество просмотров3.2K
Доброго времени суток. Столкнулся с интересной задачей в большом проекте, где много расчетов разных расстояний. При том, что даные собираются с разных источников, они могут быть в разных единицах — там метры, там миллиметры. Уследить за всем этим трудно, когда вычисления разбросаны повсюду. А если обьявлена переменная, то зачастую только автору досконально известно, в каких она единицах, так как комментариев в коде почти нет. А автор уволился/забыл/ушёл в запой.
Читать дальше →

Применяем дженерики в RAD Studio Delphi. Создаем библиотеку сортировки списков однотипных объектов

Время на прочтение6 мин
Количество просмотров17K
Сегодня будем создавать в RAD Studio Delphi библиотеку классов, реализующих сортировку списков однотипных объектов.

Цель задачи


Прикладной разработчик должен получить инструмент для создания дочерних классов, в которых можно:

  • оперировать с объектами списка;
  • применять различные правила сравнения объектов;
  • применять различные алгоритмы сортировки объектов.

На выходе должна получиться библиотека классов, которая позволяет:

  • прикладному разработчику сортировать любой из 100 объектов любым из 100 методов сортировки;
  • дорабатывать и поддерживать новые алгоритмы или новые типы объектов в течении одного дня силами одного специалиста.
Читать дальше →

Интеграция внешней объектной системы в Delphi на примере IBM SOM

Время на прочтение11 мин
Количество просмотров3.8K
SOM Technology: Making the Pieces Fit4 года назад вышла моя статья про IBM SOM, где я констатировал крайне плачевную ситуацию, когда утерян значимый инструментарий, и чем дальше, тем меньше шансов восстановить. За прошедшее время много, чего случилось, нашлись и SOM 3.0 для Windows, и SOM 2.1, и открытый клон somFree, и рабочий компилятор DirectToSOM C++ для Windows, и мост в OLE Automation.

Один из моих проектов реализует поддержку SOM в Delphi. Разработка начиналась на Delphi, пришлось часть привязок делать вручную и не так красиво, в процедурном стиле, без проверки типов. Используя эти привязки, был написан генератор привязок в объектном стиле, а затем и сам генератор был переписан на новые привязки, став подтверждением их работоспособности. Ради красоты пришлось хакнуть объектную систему Delphi, и, может быть, вам будет интересно, как это вообще можно делать.
Читать дальше →

Выбор СУБД для мобильного Delphi-приложения

Время на прочтение7 мин
Количество просмотров20K
Данная статья написана по мотивам – мотивам разработки мобильного приложения, недавно вышедшего на платформах iOS и Android. Это событие можно было бы назвать заурядным и мало кому интересным, если бы не одно большое и несколько незначительных «но»: вся разработка (включая сервер) велась на Delphi, а в качестве СУБД, как ни странно, задействована совсем не SQLite. Автор, безусловно, понимает, что на текущий момент уже существуют мобильные Delphi-приложения, включая доступные в официальных магазинах, однако не наблюдает обилия русскоязычных публикаций, призванных, как минимум, предостеречь читателей от ошибок, сделанных разработчиком таких проектов. Написанное же здесь преследует цель помочь тем, кто сейчас выбирает СУБД для своего творения, либо уже остановился на каком-то варианте, но желает убедиться в правильности своего решения.

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

Input lag во время рендеринга и как его побеждать

Время на прочтение6 мин
Количество просмотров35K
Привет всем. Многие из вас знакомы с лагом ввода. Это бывает, когда вас в очередной раз убивают в компьютерной игре, и вы кричите: «Ну я же нажал блок/атаку/уворот». Ну а затем джойстик летит в стену. Знакомо? Происходит это потому, что между нажатием клавиш и появлением результата на экране проходит значительное время. Фактически, когда вы смотрите в экран — вы видите прошлое состояние, которое может абсолютно не отражать действительность.

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

Часть 1. Платформа СППР Универсальные алгоритмы

Время на прочтение8 мин
Количество просмотров18K
Приветствую, уважаемое сообщество!
Забегая вперед прошу прощения у тех, кто ожидает новизны или революционных идей. Их тут нет. Но есть вполне хорошая прикладная система.

Системы поддержки принятия решений сейчас набирают обороты. Причем я не буду особо останавливаться на перечислении способов реализации. Оговорюсь только об основных свойствах. Я бы очень упрощенно и обобщенно назвал эти системы вероятностными. То есть они выдают рекомендации с известной долей вероятности используя накопленную и проанализированную статистику. Не скажу что это плохо. Тема BigData и Machine learning нынче в тренде. Так же эти системы работают по принципу черного ящика. Поэтому проверить достоверность работы заложенной модели не всегда можно выявить.
Читать дальше →

Часть 2. СППР Универсальные алгоритмы – Алгоритм для службы поддержки

Время на прочтение4 мин
Количество просмотров8.7K
В следующей статье описан еще один подход по реализации системы поддержки принятия решений. На основе этой СППР был реализован алгоритм для службы поддержки.

Исходное состояние – я руководил службой внедрения и сопровождения в частной медицинской компании. Филиальная сеть отделений в регионах, которая работает под управлением единой системы. Так же используется схожее оборудование на всех объектах. Фактически все оборудование подключено в систему и отдает данные (диализные аппараты, лабораторные анализаторы, аппараты УЗИ и кардиографы, измерители веса и давления, водоподготовка, система вентиляции, датчики температуры и влажности).

Сеть отделений постоянно расширяется. В каждом отделении есть ИТ-специалист. Далеко не всегда этот специалист компетентен в различных областях. Задача стояла достаточно масштабная по обеспечению работоспособности довольно сложной с точки реализации системы.
Читать дальше →

Стандартизация записей

Время на прочтение4 мин
Количество просмотров5.5K

Я волком бы выгрыз бюрократизм!
Владимир Маяковский


Рассмотрим в этой статье проблему стандартизации записей. Стандартизация, прежде всего, нужна при импорте миллионов записей, накопившихся за десятилетия. Данные, имеющие разную кодировку страниц из разных автоматизированных систем, собираются в единую базу информационной системы. В таком случае, обращение к функциям чтения строк по ascii, типа QRchar себя не оправдывает, поскольку формат Юникода от записи к записи отличается. К тому же кириллица в словах часто бывает перемешана с цифрами и латиницей (например, когда вместо 'ч' пишется '4'). При этом прямая циклическая замена цифр и латиницы на кириллицу в строке невозможна, так как цифры с латиницей встречаются в и обозначениях.

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

Delphi. Что таит в себе TDictionary

Время на прочтение6 мин
Количество просмотров32K

Доброго времени суток.
А знаете ли вы, что не все хеш таблицы одинаково полезны? Сейчас я расскажу вам историю, как одна плохая хеш таблица скушала всю производительность, и не поморщилась. И как исправление этой хеш таблицы ускорило код почти в 10 раз.
Конечно, согласно теме — в статье речь пойдет о Delphi, но даже если вы не Delphi разработчик, то все равно советую заглянуть под кат, а после прочтения статьи в исходный код хеш таблиц, которые вы используете. А Delphi разработчикам я советую вообще отказаться от стандартного TDictionary.
Итак, поехали

Слабые[weak] ссылки в новой версии Delphi

Время на прочтение4 мин
Количество просмотров9K
Здравствуйте.

Компания Embarcadero вчера объявила о выходе новой версии Delphi RAD studio XE 10.1,
Весь список изменений можно посмотреть тут, я же хочу рассказать о наиболее ценном(для нашей компании) улучшении, а именно о внедрение слабых [weak] ссылок в классический компилятор (Win32/Win64).

Выше в статье даны подробности проблемы, так что тем кто желает посмотреть что сделали в делфи прошу под кат.
Читать дальше →

RSA шифрование через библиотеку OpenSSL в Delphi

Время на прочтение6 мин
Количество просмотров27K


По долгу службы в разработчиках повстречалась задача шифровать текстовые строки алгоритмом RSA, используя публичный и секретный ключи в PEM формате. При изучении данного вопроса выбор пал на использование библиотеки OpenSSL. Хочу поделиться примерами реализации функциональности шифрования на Delphi. Действия выполнялись в ОС Windows, среда разработки Borland Delphi 7.
Читать дальше →

ARM: GNU AS: Проект: Среда для программирования на ассемблере (Самодел на Delphi)

Время на прочтение6 мин
Количество просмотров9.8K
Начиная программировать на языке ассемблера для микроконтроллеров ARM первое, с чем вы столкнетесь — это отсутствие какой либо среды для программирования (c первым проектом, программами для компиляции и сборки я уже разбирался). Причем бытует мнение, что для ассемблера ничего кроме блокнота и не нужно (максимум, «для гурманов» сообщество предложит использовать редактор с подсветкой кода). И этот подход в принципе имеет место быть — ровно на столько, на сколько удобно писать программы на С++ в блокноте — то есть до того момента, как вы перейдете от программ «Hello, Word» к чему то более сложному.

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

Если вам нужно тоже самое и нужно именно «ехать, а не шашечки» — тогда добро пожаловать под кат.
Читать дальше →

Ближайшие события

Delphi: Простая задачка RichEdit которую нужно решить до того как вы решите его использовать

Время на прочтение3 мин
Количество просмотров17K
Потихоньку начал писать собственный редактор для написания программ под ARM на языке ассемблера, и решил начать с самого простого: сделать разбор текста при редактировании.
И тут я нашел небольшие такие грабельки :-)

Итак вопрос:
Есть редактор RichEdit в который мы ввели текст:

Курсор стоит вначале строки перед "9", RichText.SelStart := 12

Как в программе узнать символ на котором стоит курсор?

Если ваш опыт подсказывает конструкцию наподобие:
   with RichEdit do
        textChar:=Text [SelStart]; 

— то ваш опыт не верен!

И если вам интересно — то правильный ответ можно увидеть под катом…

Читать дальше →

Как не стать программистом или… тебе здесь не место

Время на прочтение8 мин
Количество просмотров75K

ПРОЛОГ


Это статья для того, кто решил стать кулхацкером программистом, для того, кто еще не понимает, куда он может вляпаться и кто думает, что это не будет стоить ему больших усилий.

Статья не рекомендована к прочтению опытными программерами. Ведь как ни крути, но взгляды на программинг могут расходиться.
Посему прошу сильно не минусовать. Если у опытных программистов есть что сказать новичкам — пишите тоже свою статью.

Ну а если ты в процессе самоопределения по данной профессии — you are welcome!
Читать дальше →

Создание приложений для СУБД Firebird с использованием различных компонент и драйверов: FireDac

Время на прочтение29 мин
Количество просмотров76K
В данной статье будет описан процесс создания приложений для СУБД Firebird с использованием компонентов доступа FireDac и среды Delphi XE5. FireDac является стандартным набором компонентов доступа к различным базам данных начиная с Delphi XE3.

Наше приложение будет работать с базой данных модель, которой представлена на рисунке ниже.

diagramm


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

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

Изменения в RAD Studio 10 Seattle Update 1

Время на прочтение2 мин
Количество просмотров11K
В декабре 2015 года вышло обновление RAD Studio 10 Seattle Update 1, которое включает ряд существенных изменений и улучшений среды разработки RAD Studio 10 Seattle, а также устраняет множество ошибок, которые были в предыдущих версиях.

В некоторых случаях исправление ошибок одновременно расширяет функциональные возможности тех или иных компонентов IDE. В данном обновлении произведено более 250 улучшений и исправлений, при этом более 70 были выявлены пользователями и сообщены через Quality Portal.
Читать дальше →

Webmoney-бонусы в культурном русле

Время на прочтение5 мин
Количество просмотров24K
image

Лет 10-12 назад я все думал «где бы срубить денег на халяву».

В клиенте Webmoney тогда были на последней вкладке ссылки «Потратить» и «Заработать» с красивыми пиксель-артными значками (и сейчас есть, но значки не такие красивые).

При взгляде моими стеклянными глазами на эту ссылку «ЗАРАБОТАТЬ» одна только мысль что в инете можно не только потратить, но и заработать(!) трясла меня. И я, судорожно перебирая костлявыми высохшими пальцами кнопки на своей старой зажиренной клавиатуре, искал где же тут заработать-то можно.

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

Но все сайты, описанные в вебмани-клиенте, оказались заработком типа «просмотр сайта по таймеру с капчей в конце». И эти таймеры были так нудны, долги, с такими копейками на выходе — что я не захотел так мучаться. Я хотел жать простую кнопку и получать деньгу!

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

И у меня родилась мысль — как бы культурно и аккуратно собрать эти бонусы, сделав ту заветную кнопку, по нажатию на которую будут приходить деньги.

Это был примерно третий курс института, 2004(-5) год
и я как раз начал недавно изучать Delphi 5

Серия вебинаров по работе с данными

Время на прочтение1 мин
Количество просмотров2.2K


Друзья!

Мы запустили серию вебинаров, посвященную инновационным решениям, включенным в продукты Embarcadero для специалистов по работе с данными выпуска 2015-2016 года.

Будем говорить не только о решениях для проектирования и моделирования архитектуры корпоративных данных, но и о средствах построения серверных многозвенных систем со стандартным API. Отдельно обсудим обновленные средства управления мобильными данными и создание приложений на основе NoSQL баз данных. И во второй половине серии будем рассказывать про технологии нового поколения управления производительностью БД. Не пропустите.

На этой неделе поговорим о том, как использовать Rapid SQL для ускорения разработки SQL и другого кода для СУБД и обсудим вопросы оптимизации командной разработки.

Регистрация: goo.gl/GhDcIl

Что не так с этим кодом?

Время на прочтение5 мин
Количество просмотров11K
image Привет всем.
По мере моей работы с Delphi я нахожу интересные подводные камни, приводящие к ошибкам. Парочкой из них я хочу поделиться с вами в форме задачек. Ответы на них я опубликую через пару дней, а пока вы можете попробовать разобраться в не очевидном поведении самостоятельно. Если интересно — добро пожаловать под кат.
Читать дальше →

Вклад авторов