Рубрика «Delphi» - 20

Уважаемые разработчики!

Для тех, кто не сможет посетить запуск RAD Studio XE4 в Москве, Минске или Киеве, мы предлагаем присоединиться к прямой трансляции, которая начнется 23 мая в 10 утра.

Смотреть трансляцию можно прямо с сайта мероприятия softwarepeople.ru/delphixe4/.

В этом году мы специально пригласили в качестве спикеров представителей центра разработки что позволит вам получить информацию о новых возможностях из первых рук, а также на запуске выступит Дмитрий Арефьев, создатель AnyDAC, ребрендированной в FireDAC, после приобретения Embarcadero в этом году.

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

При разработке одного небольшого проекта на Delphi с использованием FastScript, столкнулись с одной неочевидной особенностью.
Надеюсь, кому-то найденная особенность будет полезной и сэкономит время разработки.
Читать полностью »

Хабрет, читателям!

Как упростить жизнь программисту при отрисовке графиков в прямоугольной система координатНе долго думая решил поделиться очень простым способом облегчить себе программерскую жизнь.
Иногда математические знания заложенные в школе запутывают начинающего программиста, что открыв исходник написанный несколько недель назад с трудом вспоминаешь что к чему.
Например, нам нужно нарисовать график какой нибудь функции на элементе Image1 с помощью Canvas. Для определения координат пикселя в современных языках программирования отсчет начинается из верхнего левого угла холста. А что, если нужно отрисовать точку на плоскости используя прямоугольную систему координат (далее ПСК). Система координат имеет горизонтальную ось абсцисс, вектор луча которой направлен слева направо и вертикальную ось ординат — снизу вверх. Это очень усложняет определение привычных для нас координат точек на графике, особенно при кодинге с большим количеством взаимозависимых переменных.
Дабы не запутаться в коде я решил написать функцию…
Читать полностью »

О чем данная статья:

Множество программ позволяют пользователю открывать файлы посредством перетаскивания их из проводника в окно приложения. Как правило это более удобно для пользователя, в отличии от стандартной модели открытия посредством выбора меню «Файл -> Открыть» или нажатия соответствующей кнопки на панели инструментов, так как в данном случае пользователь пропускает этап работы с диалоговым окном.
Добавление данной возможности в ваше приложение сделает его более «профессиональным».

Как это работает:

Есть два основных пути добавления данного функционала в Windows приложение.
Первым способ заключается в использовании стандартных Windows Drag-and-Drop API функций и обработка сопутствующих оконных сообщений.
Вторым методом является использование технологии OLE (COM), который предоставляет расширенные методы передачи данных между приложениями.
В данной статье будет рассмотрен первый и самый простой способ.

Краткий обзор:

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

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

Монитор. Отличное слово, правда, объединяющее в себе целую кучу понятий. Ну например впервые данное слово было применено в 1861 году к броненосцу «USS Monitor». Чуть позже данным словом стали называть дисплеи. Еще через некоторое в славную когорту мониторов вошли более привычные нам вещи, наподобие счетчиков производительности, а вместе с ними целая куча разнообразного ПО, основной задачей которого является наблюдение — то есть мониторинг.

Задача монитора проста — по сути он наблюдатель, хотя может выступать и в качестве управляющего, кстати один из вариантов перевода «Monitor» — наставник :). Задачи его так же очевидны, отдавать набор данных, на основе которых можно произвести анализ ситуации и сделать соответствующие выводы.

В современном ПО мониторы встречаются практически повсеместно, ну для примера тот же Punto Switcher — классический пример легального монитора. Практически все антивирусы являются мониторами, профилировщики, ну и я уж не говорю об основном нашем инструментарии — отладчике, который так же является монитором.

С обратной стороны баррикад выступают целые кучи зловредного ПО, некоторые из которых так же предпочитают использовать мониторинг для достижения своих основных целей. Впрочем не о них сейчас…

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

Так случилось и у меня, за последний месяц ко мне обратилось несколько человек с вопросом как правильно реализовать перехватчик и ссылки на примеры им практически не помогли, пришлось все разжевывать с нуля. Зато теперь я в курсе основных ошибок, встречающихся у людей, только начинающих разбираться с методиками перехвата :)

В итоге, дабы не объяснять в следующий раз все заново, я решил сделать обзорную статью где попробую рассказать все максимально простым языком о том, «как это работает» :)
Читать полностью »

Все хорошее имеет тенденцию повторяться, и конференция Infostart Event не исключение.

23 и 24го мая в Санкт-Петербурге, в Концертном зале «Колизей» на Невском пр., 100 пройдет Infostart Event Evolution – самое значимое мероприятие по управлению проектами и профессиональной разработке на платформе 1С: Предприятие в 2013 году.

Тема конференции: Управление и технологии автоматизации учета на платформе 1С: Предприятие.

Традиционно мероприятие посетят около 600 человек, это — руководители финансовых и ИТ-отделов, системные администраторы, экономисты, бухгалтеры, консультанты, аналитики, менеджеры проектов – вообщем все те, кто внедряет систему автоматизации учета в своих компаниях и использует программы учета для решения своих профессиональных задач.

К слову INFOSTART.RU – самый посещаемый (более 350 000 участников!) ресурс по автоматизации учета и управления в Рунете.

Infostart Event Evolution 2013 – мероприятие, сохранившее формат и масштаб, но полностью изменившее программу конференции. Докладчиками конференции снова выступят признанные «звезды» в области автоматизации учета и управления на 1С, менеджеры нового поколения и первоклассные профессионалы.
По многочисленным просьбам мы делаем конференцию такой же крутой решено сохранить прежний формат мероприятия — работу двух залов: большого, где проходят выступления спикеров, и малого, где участникам предоставляется возможность лично пообщаться с докладчиками. Так же будет работать 3й, дополнительный зал, с презентациями наших партнеров
По традиции после завершения официальной части первого дня конференции приглашаем участников на Infostart Afterparty в клуб Money Honey на Садовой, 28.

Докладчиками и ведущими мастер-классов Infostart Event Evolution 2013 станут Павел Чистов, Никита Зайцев, Андрей Гилев, Фарит Насипов, Александр Тарасинский, Сергей Старых, Евгений Гилев, Евгений Сосна, Сергей Коцюра, Антон Щекачев, Валерий Агеев, Алексей Патюков, Федор Куликов, Евгений Шумилов, Сергей Яковенко, Артур Абеленцев, Франц Бдоян, Михаил Харитонов, Сергей Лебедев, Андрей Аристархов, Андрей Акулов. и список продолжает пополняться

Официальный информационный партнер конференции Infostart Event Evolution 2013 – CNEWS. Почетные гости – PricewaterhouseCoopers.

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

Привет всем.

Начну с того, что на днях пришла рассылка по Delphi и RAD Studio XE4, в которой Delphi декларируется как мультиплатформенное средство для быстрой разработки для компьютеров, ноутбуков, планшетов и мобильных устройств, включая MAC, iPhone, iPAD, также у Embarcadero есть планы сделать поддержку мобильной платформы Android.

Delphi и FreePascal — это Паскаль сегодня. Один из моих любимейших языков программирования. Язык прошёл долгий путь от “игрушки для учёных” до мощнейшего универсального средства разработки, на котором сделаны великолепные проекты, например, Total Commander.

Построенное на здравых решениях, ядро языка Паскаль легко поддалось усовершенствованию и умощнению и пригодно для широчайшего класса практических задач. В России Delphi особенно популярен и всё ещё широко используется. Однако развитие языка идёт по принципу наращивания возможностей, и постепенно Delphi становится всё более громоздким, догоняя по сложности таких монстров как PL/1, C++ и Ada. С большой вероятностью мы можем предположить, что проще язык становиться не будет, ибо нужно поддерживать совместимость с накопившейся базой исходников и т.д. В конце концов такая стратегия развития неизбежно приведёт к трудностям, когда сложность уже невозможно будет контролировать.

В то же время есть язык программирования, получившийся за несколько десятилетий практического преподавания и решения различных задач путём методического и последовательного уточнения Паскаля. Это Оберон — самый красивый из всех минималистичных языков, о котором мало кто слышал. Я смело утверждаю: Паскаль сегодня — это не только Дельфи (полученный методом наращивания), но и Оберон-2 / Компонентный Паскаль (полученные методом отбрасывания, пересмотра и уточнения целесообразности тех или иных средств). Благодаря тому, что над автором языка не довлела необходимость совместимости, он особенно на эту тему и не парился. И получившийся в итоге язык — цельный, компактный, мощный, кроссплатформенный в широком смысле (включая не только современные платформы, но и Amiga, и даже Atari). На Компонентном Паскале я успешно разработал мидлет для Java micro edition, не предвижу трудностей и в разработке для Android. Кроме одной: отсутствие инфраструктуры, да и вообще о таком использовании Оберонов мало кто знает.

Оберон-2 и Компонентный Паскаль — мультипарадигменные языки для системного и прикладного программирования, они модульные, компонентные и объектно-ориентированные. Разработанные на диалектах Оберона операционные системы, компиляторы и другие программы — часто сами по себе произведения искусства. Они красивы, неординарны, компактны и достойны всяческих похвал. Оберон популярен в академической среде как способ записи алгоритмов (пришёл на смену Фортрану) и как минимальный язык для исследований (посмотрите, например, сколько вышло публикаций по Оберону на сайте издательства SpringerLink. Он идеально подходит для обучения программированию. В России есть проект Информатика-21, популяризующий применение Оберона для подготовки будущих программистов, ибо, помимо своих технических достоинств, Оберон даёт хорошее понимание технологий программирования и не зависит от коммерческих интересов крупных корпораций. Посмотрите чего наваяла моя малолетняя племянница после недели разговоров со мной о программировании. Благодаря простоте языка энтузиасты разработали много компиляторов Оберон-диалектов для различных платформ.

Вирт всегда считал правильным конструировать процессоры под языки, а не наоборот. Но, несмотря на это, Оберон-программы хорошо конвертируются в Си, Java, работают как на нативе, так и на .NET/JVM. Разрабатывается компилятор GPCP для LLVM. Мне принадлежит идея ZXDev — среды разработки на Обероне-2 для восьмибитного процессора Z80 и компьютера ZX Spectrum. Самая новая ревизия виртовского Оберона называется Oberon-07. Он ещё меньше по размеру, чем Оберон-2, и адаптирован для ARM-процессоров и архитектур большой разрядности. Вот такое направление развития Паскаля. Малоизвестное широким массам программистов, но красивое как произведение искусства. Уже более семи лет я активно применяю Оберон-технологии с пользой для своей деятельности, и программировать на чём-то другом уже мало хочется.
Читать полностью »

Вступление

Привет, Хабровчане.
Весной обычно проводится целая куча олимпиад. Программирование не исключение. Защищать честь моего учебного заведения (я учусь в техникуме, опыта мало, поэтому простите мой нубокод) доверили мне и моему одногруппнику.
У нас правила проведения такие: за месяц до олимпиады выдаются 10 заданий, а перед олимпиадой будет рандомно выбрано одно задание и роздано участникам. Я живу на Юге Украины, а Украина – страна специфическая, даже в программировании. При выполнении задания нужно написать программу на языке Delphi/C++/C# (один из них), сделать приятный и удобный интерфейс (красиво, информативно, обязательно должна присутствовать автоочистка, переход к следующему текстовому полю при нажатии на Enter и т.д.), переписать код программы на листик и нарисовать блок-схему (!) к программе. Да-да, блок схему к ООП программе.
Ладно, суть данного поста не в описании системы образовании в Украине. Я хочу привести код своих программ, являющихся решением заданий. Для чего я это делаю? Мне с одногруппником пришлось очень много перерыть в нете, поспрашивать на форумах и мучать знакомых ПРОграммистов, чтобы решить некоторые задания, так как ответа на поверхности интернета нет.
Читать полностью »

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

Задавшись в свое время вопросом: «как определить наличие физического ключа?», мне пришлось немного поштудировать великолепно поданный материал за авторством Павла Агурова в книге "Интерфейс USB. Практика использования и программирования". После чего потратить время на анализ вызовов API функций из трехмегабайтного объектника, линкуемого к приложению, в котором собственно и сокрыта вся «магия» работы с ключом.

В итоге появилось достаточно простое решение данной проблемы не требующее использования оригинальных Guardant API.
Единственный минус — все это жутко недокументированно и техническая поддержка компании Актив даже не будет рассматривать ваши вопросы, связанные с таким использованием ключей Guardant.
Ну и конечно, в какой-то момент весь данный код может попросту перестать работать из-за изменений в драйверах Guardant.
Но пока что, на 27 апреля 2013 года, весь данный материал актуален и его работоспособность проверена на драйверах от версии 5.31.78, до текущей актуальной 6.00.101.

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

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

Сразу-же оговорюсь, в противостоянии приложение/отладчик, всегда победит последний :)
Но, только в том случае, если им будет пользоваться грамотный специалист, а с такими спецами бороться практически бесполезно (ну, если вы конечно не обладаете как минимум такой же квалификацией).

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

Вот что-то такое мы и рассмотрим, только в очень упрощенной форме.
Читать полностью »


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