Постановка задачи.
Имеется большой Клиент-Сервер проект. Клиент программно строит динамические SQL запросы для выполнения на SQL сервере. Запросов много, логика построения размазана по всему клиентскому коду. Проект развивается во времени, необходимо модифицировать структуру базы данных. Как заставить компилятор показать все места, где в коде используются уже не существующие поля? Как заставить компилятор проверить, что целочисленному полю не присваивается строковый параметр? При этом паскалевский код должен быть приближен к SQL синтаксису.
Читать полностью »
Рубрика «Delphi» - 18
Универсальный Тестовый Комплекс или как я научил учителей своей школы экономить время
2013-11-21 в 14:03, admin, рубрики: Delphi, образование, Программирование, тестирование, тестирование студентов, учеба, школа, метки: Delphi, образование, Программирование, тестирование, тестирование студентов, учеба, школаПредисловие
Эта статья о моём небольшом хобби, которое помогает мне в каком-то плане развиваться, тратить энергию в нужное русло и получать при этом необходимые знания. Очень давно меня посетила идея написать игру для того, чтобы вместе с друзьями весёлой компанией собираться вечером за экранами мониторов и играть во что-нибудь. Выбрал классический вариантЧитать полностью »
Пример использования DataSnap Callback: запрос данных от пользователя во время вызова серверного метода
2013-11-19 в 7:24, admin, рубрики: callback, Delphi, Программирование, метки: callback, DelphiЧто это и для чего надо:
Работа с Datasnap заключается в запросе от сервера данных и вызове серверных методов, например:
— Запросить список товаров с сервера (dataset )
— Создать новый документ
— Добавить в него позиции
— Закрыть документ
Иногда при добавлении позиции необходимо сделать дополнительный выбор, например выбрать партию товара или разрез.
Это можно сделать через возврат кода ошибки (что-то вроде Prepare/Execute), чтобы клиент запросил пользователя, а затем попробовал снова выполнить операцию.
Или же дать серверу возможность запросить клиента непосредственно во время операции все необходимые ему данные.
Разработка кроссплатформенных мобильных приложений в Delphi #4
2013-11-15 в 16:15, admin, рубрики: android, Delphi, метки: android, DelphiВ четвертой части настоящего цикла мы вновь возвратимся к разработке «настольного» приложения и попытаемся более подробно разобраться с технологией связывания объектов LiveBinding. Данный механизм универсален и подходит как для мобильных, так и настольных приложений. Более того, этот механизм работает и в VCL. Знакомство же с LiveBinding лучше начать именно в классическом проекте.
Прежде всего, нам придется выполнить несколько однотипных задач, работа над которыми может показаться рутинной. Речь идет о создании форм редактирования списков, а именно, списка единиц измерений и списка продуктов. Данные формы будут вызываться из меню главной формы, которое нам также предстоит создать.
Итак, в модуле данных поместим два компонента TFDTable и настроим их на работу с таблицами tblUnit и tblFoodstuff (по аналогии с набором данных для работы с таблицей tblRecipe). Двойным щелчком на компоненте откроем редактор полей, добавим все поля (пункт контекстного меню Add all fields).
Важно понимать, что практически во всех реализациях компоненты наборов данных наследуются от класса TDataSet и работают с некоторым набором полей. Здесь имеются в виду экземпляры классов, наследников TField (TIntegerField, TStringField и т.д.). Набор полей можно создать в режиме проектирования (design-time) и настроить свойства полей с помощью «инспектора объектов». Если рассматривать TFDTable, то помимо полей, соответствующих физическим полям таблицы, можно создать и другие типы полей, например, вычисляемое (Caclulated) или подставляемое (LookUp) поле. Значения этих полей будут вычисляться динамически в ходе работы программы, а не браться из источника данных. Чуть ниже мы рассмотрим пример создания таких полей.
В том же случае, если набор полей не создан в режиме проектирования, при открытии набора данных в процессе работы программы, набор полей будет создан автоматически.
Ниже приведен фрагмент файла формы модуля данных uDM.dfm, содержащий описание одного из наборов данных и связанных с ними полей. Текстовое представление формы можно получить, если в контекстном меню формы выбрать пункт «View as Text». Для того, что бы вернуться в обычный режим представления формы, следует нажать «View as Form».Читать полностью »

У меня, как и у многих, давняя история знакомства с Дельфи — в старые добрые времена было модно начинать изучать программирование с уже устаревающего на тот момент GWBASIC’a, и стройного алгоритмичного Паскаля. Дельфи, выросшая из Турбо-Паскаля, произвела позже фурор своей новизной и “компонентным” подходом к разработке. Потом пришли новые мощные языки, веб начал теснить десктоп и я ушел в веб-разработку надолго.
Пару лет назад я пришел в проект, который разрабатывается на Дельфи, и после других языков я понял, что мне иногда неудобно ей пользоваться. В большинстве языков есть понятие “пакета”, менеджеры пакетов и репозитории, которые их хранят, в Дельфи же ничего похожего нет. Все зависимые библиотеки ставятся вручную, и пути к ним нужно прописывать в файле с настройками проекта. Если проект перенести на другой компьютер, то нужно молиться на то, что бы библиотеки там находились в тех же папках. Это ужасно, на мой взгляд. Зависимости должны прописываться в проекте, и потом автоматически скачиваться и устанавливаться, если они не установлены, и все пути к зависимостям должны проставляться автоматически.
Так и появился менеджер пакетов для Дельфи — OwlyCI, о котором я расскажу ниже.
Читать полностью »
Ханойская башня на пальцах
2013-11-04 в 17:30, admin, рубрики: Delphi, Алгоритмы, алгоритмы поиска, метки: Delphi, Алгоритмы, алгоритмы поиска
Пообщавшись с некоторыми знакомыми программистами, внезапно обнаружил, что не все знают про Ханойскую башню, а среди тех кто знает — мало кто понимает как решается эта задача.
Википедия по этому поводу пишет очень строго, по делу, и ничего не объясняет. Мол принимайте как прописную истину. Поэтому понять как она решается — сходу трудновато. А ведь задача очень простая, и между тем интересная в программировании и математически.
В статье будет много картинок. Объяснение как решать задачу рекурсивно и как она решается бинарным поиском.
В общем статья посвящается тем смелым, кто пока еще боится Ханойской башни, но хочет перестать её бояться.
Читать полностью »
Разработка кроссплатформенных мобильных приложений в Delphi #2
2013-11-01 в 11:16, admin, рубрики: Delphi, FireMonkey, пример, учебник, метки: Delphi, FireMonkey, пример, учебник
В предыдущей части цикла мы сделали обзор основных возможностей новой RAD Studio XE5. Сегодня же перейдем к практике. Прежде всего, давайте определимся с задачей.
Постановка задачи
Не смотря на некоторую академичность задачи, в качестве примера мы выбрали кулинарную книгу. А для придания оригинальности разрабатываемому приложению, попытаемся расширить обычный для подобных программ функционал несколькими дополнительными функциями:
Пересчет количества требуемых продуктов.
Обычно в рецептах указывается точное количество используемых продуктов. Но если требуется изменить количество порций, то соответственно, необходимо пересчитывать и количество продуктов. В процессе приготовления блюда это не всегда удобно.
Таймер.
Если вы новичок в кулинарии, то, вам следует использовать рецепты, в которых четко указано время той или иной операции. И таймер на планшете, телефоне или нетбуке вполне может стать удобной заменой кухонному таймеру.
Часто бывает, что несколько операций выполняются параллельно. Каждая операция может иметь свой «таймер».
При этом нас интересует, как «настольная», так и мобильная реализация приложения. Мобильное приложение будет использоваться в качестве пособия для визуализации рецепта и сопровождения процесса подготовки. Настольная версия может быть использована в более расширенном функционале для, например, формирования новых рецептов.
Здесь следует оговориться, что в принципе, поваренные книги, как и книги по программированию, могут быть рассчитаны на разный уровень подготовленности читателей. В нашем случае речь идет о «рецептах для чайников», т. е. тех, в которых указывается точное количество продуктов и точное время того или иного действия.
Данное приложение мы реализуем для Windows и для Android. Затем на основе единой базы исходных кодов мы сможем выполнить портацию приложения на MacOS и iOS. Читать полностью »





