Как стать автором
Обновить
0.5
Рейтинг

Delphi

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Delphi и SQLite. Альтернатива хранимым процедурам

DelphiSQLite
Из песочницы

SQLite во многих случаях является удобным, незаменимым инструментом. Я уже не могу себе представить - как мы все жили без него. Тем не менее, есть некоторые неудобства при его использовании, связанные с тем, что это легкая встраиваемая СУБД.

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

Предлагаю свой вариант решения проблемы:

Выносим весь SQL-код в отдельный файл ресурсов, подключенный к проекту

Запросы в SQL-файле разделяем маркерами начала с идентификаторами и маркерами конца

Создаем класс - менеджер SQL-запросов. При загрузке приложения он читает SQL-файл из ресурсов и составляет из него список хранимых процедур.

В процессе работы приложения менеджер извлекает текст SQL-запроса по его идентификатору для последующей его передачи на выполнение

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Просмотры5.6K
Комментарии 135

Новости

Показать еще

Даешь свободную литературу! Или как я с политикой вуза боролся

ПрограммированиеDelphiАлгоритмыHTMLPDF
Из песочницы

Доброго времени суток, хабровчане!  Это мой первый пост на форуме, так что прошу строго не судить.

 Как и полагается любому техническому вузу – в нашем есть куча интернет ресурсов, которыми вуз чрезмерно гордится. Однако есть оборотная сторона медали – качество этих сервисов. А именно, если говорить про электронную библиотеку, о коей и пойдет речь в данной статье, то в ней напрочь отсутствует возможность скачивания pdf-версии нужной тебе методички, точнее она есть, но за это придется заплатить немало денЯк. Деньги далеко не маленькие (если говорить именно про цену за вузовские методички). Если же такой формат не устраивает, то можешь пользоваться онлайн библиотекой.

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

И теперь представьте картину: человек пытается подготовиться к контрольной по квантовой механике по методичкам преподавателя, объемом 700 страниц, где необходимый материал находится на 500, и может перелистывать по 5 страничек в минуту, и каждые 20 минут, его попытки приходится возобновлять.… В общем, жесть…. И вот после очередной неудачной попытки прочитать нужную главу,  я решил, что пришло время положить конец данному произволу.

Читать далее
Всего голосов 29: ↑23 и ↓6+17
Просмотры7.7K
Комментарии 32

Ansible-vault decrypt: обходимся без Ansible

PythonDelphi*nixDevOps

Вы когда-нибудь пробовали разобраться в том, что же происходит внутри ansible-vault? А ещё лучше - не только разобраться, но и что-то сделать на основе полученных знаний? Так вот, статья именно об этом: разбираем исходники ansible, а потом пишем свой расшифровщик для ansible-vault.

Язык для написания расшифровщика был выбран по принципу "я - автор статьи, выбираю что хочу язык под задачу, исходя из технических требований". Результат компилируется за 0.6 секунд в исполняемый файл размером 800Кб, который не требует внешних библиотек.

Заинтригованы? Добро пожаловать под кат!

ansible-vault decrypt go brr
Всего голосов 8: ↑8 и ↓0+8
Просмотры2.9K
Комментарии 28

Шахматы на Delphi. Как я изобретал велосипед

DelphiРазработка игрЛогические игры

Писать игровой AI очень интересно и увлекательно - не раз убеждался в этом на личном опыте. Недавно, случайно наткнувшись на код своего старого проекта шахматной программы, решил его немного доработать и выложить на GitHub. А заодно рассказать о том, как он создавался и какие уроки преподал мне в процессе работы.

Читать далее
Всего голосов 68: ↑65 и ↓3+62
Просмотры16K
Комментарии 45

Delphi 7 на костылях: автоматизация подготовки ресурсов

ПрограммированиеDelphi
Recovery mode

О костылях и велосипедах, неотъемлемой части современной некромантии.

Эпиграф: «Пусть это вдохновит Вас на подвиг!» (Бел Кауфман, «Вверх по лестнице, ведущей вниз»).

Это история интеграции в процесс разработки одного единственного решения. Решение доведено до конечного результата, ссылка на репозиторий будет далее по тексту.

Казалось бы, что может быть более простым и естественным, чем прозрачная, без «нелепых телодвижений», работа с размещёнными в специально выделенной для этого папке ресурсами? А если среда разработки выпущена на границе тысячелетия?

Читать далее
Всего голосов 13: ↑10 и ↓3+7
Просмотры4.5K
Комментарии 18

Стероидный велосипед: векторная алгебра, на ассемблере, в Delphi

Высокая производительностьAssemblerDelphiМатематика
Tutorial

Некоторое время назад понадобилось мне в одной Delphi-шной программе много посчитать, но расчеты шли как-то подозрительно долго. Переписывать около 100 kLOC не хотелось- особенно из-за наличия большого количества форм, но предыдущий мой опыт показывал, что если код расчетов перекомпилировать в Lazarus'е (с FPC3.0.4)- то скорость счета возрастает до 2-х раз, и поэтому было очевидно, что конкретно в данном случае компилятор Embarcadero (разных версий) сильно несилен, и надо его менять. С другой стороны, IDE от Embarcadero для рисования GUI- вне конкуренции, а их компилятор на редкость быстрый (оно и понятно- быстро+плохо, или медленно+хорошо). Но ведь вкус кактуса неимоверно притягателен. Профайлинг подручными средствами (tinyprofiler) во всех случаях показывал, что основное время (90%) занимают операции векторной алгебры над большими массивами чисел, а быстрый тест производительности этих процедур показал, что на операциях с этой алгеброй общая "пропускная способность" имевшегося математического ядра составляет для операций типа умножения векторов и скалярных произведений- ~4 ГБ/с, для умножения вектора на матрицу- 1,5-2 ГБ/с, а вот для операций обращения матрицы- проседает до 360 МБ/с (на Core I5 4460 и на Xeon 2660V2, DDR3-1866). Внутре рядом с неонкой используются только 3-х и 4-х мерные вектора и матрицы. В голову пришла мысль, что 4х4 матрица- должна целиком влезать в SSE-регистры процессора и для нее SIMD- очень желательны, а в компилятор Delphi SIMD не завезли, кажется не завезут, и вообще- дальше нижней половины XMM0 не используют. В итоге нарисовалась очень простая задача- реализовать быструю векторную алгебру в минимальном объеме для 3D/4D векторов своими руками- то есть, соорудить стероидный велосипед, о котором в заголовке написано.

И вот здесь мой навык гуглинга дал сбой- мне предлагали купить проприетарные библиотеки, в которых все уже есть, или примеры векторных операций с FP32 на SSE, но нужного FP64 - нету! Под катом- как на SSE руками сделать операцию с вектором для расчетов какой-нибудь физики и вывернуть матрицу наизнанку.

Поиграемся с XMM-регистрами?...
Всего голосов 26: ↑25 и ↓1+24
Просмотры4.5K
Комментарии 33

Немного про SOLID и суровое зомби-легаси

ПрограммированиеDelphiООП
Recovery mode

Осторожно-оптимистические размышления о месте современной производственной культуры в сопровождении унаследованного из древних времён программного обеспечения. И немного о взаимопроникновении принципов SOLID.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Просмотры8K
Комментарии 13

Как я SCADA-систему на Linux переводил

DelphiПромышленное программированиеSCADAРазработка под Linux

В этой статье я бы хотел рассказать о том, что Windows проекты на Delphi возможно перевести на Linux в разумные сроки и с разумными трудозатратами. Что такое SCADA-система, рассказывать не буду, а перейду сразу к делу.

Runtime ядро SCADA работает под Windows в качестве сервиса. Функции стандартные «как у всех»: сбор, обработка, архивирование данных, передача данных в другие SCADA-системы по стандартным протоколам обмена. Визуализация только через Web. Runtime ядро SCADA написано на Delphi. Решено было адаптировать исходный код под  FreePascal/Lazarus, так чтобы код под Windows компилировался и в FreePascal и в Delphi, вторым этапом было допиливание проекта непосредственно на Linux машине и переделка его в демон. В FreePascal привлекала возможность компиляции как для x64, так и для плат Raspberry pi (архитектуры ARMv7, ARM64 (aarch64)).

Конфигуратор работает под Windows в виде графического приложения. Пока решено не переводить его на Linux, в крайнем случае можно запустить под Wine.

Теперь перейдем к Runtime и будем говорить о нём. В нём применяются разнообразные компоненты:

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Просмотры3.1K
Комментарии 3

Склонение слов и инициалов в Delphi/Freepascal

Delphi

Добрый, предновогодний день всем! В этой статье я бы хотел рассказать, как мне пришлось вернуться в legacy-проект на паскале, причем буквально перед тем, как навсегда распрощаться и с ним, и с лазарусом, и с отсутствием темной темы из коробки.

В прошлый раз я объяснял, что не являюсь программистом по роду профессиональной деятельности, но использую любимое хобби для автоматизации всего, что попадается под руку в работе юриста. Я уверен, что 90% всей юридической волокиты может быть успешно автоматизировано: ведение разнообразных баз и карточек, составление документов по шаблонам, контроль сроков выполнения задач, использование любых вспомогательных сервисов, уже имеющих свои api, для прикручивания автоматизации на конкретном рабочем месте и т.д. К этому нужно стремиться, чтобы по заветам Айзека Азимова высвободить время юриста для реализации основной задачи - размышлять над условиями договора и разводить демагогию в суде.

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Просмотры2.1K
Комментарии 0

Особенности портирования сложного модульного ПО написанного на Delphi под ОС Linux

ПрограммированиеDelphiИнтерфейсыРазработка под Linux
Из песочницы

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

Меня зовут Тимофеев Константин, мне 40 лет и я являюсь ведущим программистом компании 3В Сервис в подразделении, занимающемся системами автоматизации динамических расчётов (САДР).

Данная статья посвящена разбору подводных камней при портировании разрабатываемого нами программного комплекса на операционные системы семейства Linux.

Читать далее
Всего голосов 94: ↑92 и ↓2+90
Просмотры15K
Комментарии 158

Radix sort — выжать всё

DelphiАлгоритмыC


Приветствую всех любителей алгоритмов. Хочу Вам поведать о своих изысканиях на тему сортировок в целом и углубиться в рассмотрение radix сортировки.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Просмотры5.5K
Комментарии 43

Math Invasion. Мой долгострой

DelphiРазработка игрUnity
Из песочницы
Привет, народ!

Расскажу я вам свою историю о том, как я разрабатывал игру. Идея о том, чтобы скрестить shoot em up с математикой, мне пришла ещё в студенческие годы (Где-то в 2008 году).
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Просмотры2.7K
Комментарии 8

Автоматы и разумное поведение. Основные положения концепции (подхода) Н.М. Амосова

СемантикаDelphiИскусственный интеллект
Tutorial



В продолжении одной из тем, поднятых в публикации Александра Ершова (Ustas) «Нейросетевой визуальный поиск», предлагаю читателям Хабра погрузиться в мир концепции Н.М. Амосова, ее $i$-моделей, М-сетей и автоматов. Как я надеюсь, именно они — наиболее вероятные кандидаты на роль «серебряной пули», которая позволит энтузиастам «сильного интеллекта» или, в другой терминологии, «искусственного разума» приблизиться к пониманию путей его реализации.


В данной статье автор попытался предельно сжато (конспективно) изложить основные положения концепции Николая Михайловича Амосова. Этот подход достаточно детально изложен в коллективной монографии «Автоматы и разумное поведение. Опыт моделирования», авторами которой был Н.М. Амосов и его соратники: A.M. Касаткин, Л.М. Касаткина и С.А. Талаев. Могу сказать, что это единственная монография, из всех работ по теме «искусственного разума», с которыми я смог познакомиться до сегодняшнего дня, содержащая ясное, обстоятельное, всестороннее, систематическое и в тоже время убедительное, а, в отдельных местах — даже высокохудожественное (говорю это без малейшей доли иронии) — изложение теоретических основ авторской концепции «искусственного разума», а также полученных на ее основе экспериментальных результатов.


Обращаюсь ко всем, у кого есть задор, жгучий интерес к теме «искусственного разума», а также желание поближе познакомиться с подходом Н.М. Амосова — читайте дальше...

Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Просмотры4.7K
Комментарии 187

Масштабирование, поворот и сдвиг растра методом суперсемплинга

ПрограммированиеDelphiАлгоритмыОбработка изображений
🔥 Технотекст 2020
В процессе разработки геоинформационной системы возникла необходимость в трансформации фотографий земной поверхности. В связи с этим была поставлена задача написать функции масштабирования, поворота и субпиксельного сдвига растра методом суперсемплинга.

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

Утилита и исходные коды размещены в архиве здесь.

Среда разработки: Delphi/Object Pascal.

Свободное использование и распространение приветствуются.

Ниже мы рассмотрим теорию и практику.


Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Просмотры2.2K
Комментарии 11

BroKB Emulz — русскоязычная клавиатура для эмуляторов DosBox/Bochs/LBochs на Android-телефоне

DelphiРазработка под WindowsСмартфоныСтарое железо

При программировании на телефоне программ под DOS или под Windows в эмуляторах существует проблема ввода русского текста - клавиатура, которой вы только что набирали русский текст в обычных андроид программах, не будет вводить никакой текст в эмуляторы. Эмуляторы, как правило, принимают на вход только обычные англоязычные коды и код других клавиш английской раскладки. А уже поставленный в DOS русификатор или настроенная языковая панель Windows на лету превратят эти англоязычные коды в русские символы при вводе (если вы предварительно переключитесь на RU язык).

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

BroKB Emulz - именно такая клавиатура!

Какая такая?
Всего голосов 10: ↑10 и ↓0+10
Просмотры2.4K
Комментарии 6

Как я сделал электронную очередь за 0 рублей на чистом энтузиазме, чего это стоило и что из этого вышло

DelphiIT-инфраструктура
Из песочницы
🔥 Технотекст 2020


Добрый день, дорогие мастера своего дела!


Это моя первая статья, постараюсь быть интересным. Много лет назад (о ужас) когда я был супер энергичен, молод и глаза горели я хотел автоматизировать все что движется и не движется. Я чувствовал бескрайние свои возможности и был уверен в себе на 100% и более, передо мной не было не одной не решаемой задачи и все горело в руках. Однако с годами трэкбар от молодости к мудрости все двигался в сторону второго. Так со временем приходил опыт, который сын ошибок трудных и увы, там же гений парадоксов друг.

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

На дворе был 2012 год…
Читать дальше →
Всего голосов 74: ↑70 и ↓4+66
Просмотры34K
Комментарии 61

JNI и Delphi. Использование Java методов при помощи JNI

JavaDelphi
Recovery mode
Всем доброго времени суток!

Сегодня мы рассмотрим такую тему, как использовать Java методы при помощи JNI.
На самом деле все очень просто. Давайте сразу начнем с примера:

Допустим у нас есть некое Java приложение на котором есть простая кнопка и при нажатии на эту кнопку будет исполняться некий код.
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        File MyFile = new File("D:\\Sample\\text.txt");
        MyFile.delete();
    }                        


Как мы видим в событии клика на кнопку будет исполняться просто код для удаления файла.
На Java все выглядит ясно и просто, но как же это будет выглядеть на Delphi с использованием JNI. На самом деле все проще чем кажется.
Для этого нам нужно разобрать заглянуть и в класс File, который находится по адресу java.io.File. Из этого класса нам нужно:
Читать дальше →
Всего голосов 9: ↑5 и ↓4+1
Просмотры1.8K
Комментарии 13

Пишем видеочат для локальной сети, или осваиваем WebRTC в 2020 году

Ненормальное программированиеJavaScriptDelphiРазработка систем связи
На фоне известных событий делать было нечего в рамках профессионального роста пытаюсь освоить WebRTC. Как известно, лучший способ освоения – сделать что-нибудь хотя бы потенциально полезное. А заодно и поделиться-обменяться опытом создания и набивания шишек.

В качестве задачи было решено сделать простое приложение, позволяющее проводить аудиовидеозвонки между двумя (пока что) стационарными или мобильными устройствами в локальной сети без необходимости подключаться к Интернету. Установка и первоначальная настройка такого приложения должны быть простыми настолько, чтобы сколь-нибудь продвинутый эникей без проблем с этим справился и показал пользователям, как делать звонки, а при наличии соответствующих навыков мог бы сделать небольшие доработки в части дизайна и возможностей. Клиентом должно выступать любое устройство, оснащённое устройствами ввода-вывода мультимедиа и позволяющее запустить подходящий браузер (Firefox или Chrome – тестил на майских, кажется, версиях).
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Просмотры5.6K
Комментарии 11

Облом, или как провалился любимый ИТ-проект

Анализ и проектирование системDelphiРазвитие стартапа
“Его пример другим наука”

Предисловие


Это грустная история о неуспехе проекта, который я считал потенциально успешным на все 100 процентов. И почему все кончилось обломом, я до сих пор толком не понимаю.
Читать дальше →
Всего голосов 75: ↑71 и ↓4+67
Просмотры27K
Комментарии 36

Передача файлов с помощью pipes и другие мелочи на Delphi

Delphi
Из песочницы
Поставили как-то передо мной задачу написать несколько юнитов на Delphi, обеспечивающих доступ к следующим возможностям Windows:

  1. Shared memory.
  2. Pipes.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Просмотры4.5K
Комментарии 22

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