Метка «Delphi» - 6

0. Предисловие

Доброго всем, чего там у вас! Поговорим немного о программировании, а именно, о сохранении настроек. Когда то давно, когда я только начинал писать более-менее приличный софт, я часто сталкивался с проблемой сохранения настроек — в ходе развития софта появлялись все новые и новые опции и каждый раз приходилось добавлять их в функции сохранения/загрузки, придумывать им имена, мучится над структурой хранения… В общем, заниматься не самыми приятными вещами. К тому же, такой подход давал богатую почву для ошибок. Но вот, в один прекрасный день, я открыл для себя Америку, идея пришедшая мне в голову навсегда избавила мои проекты от проблем с настройками. Именно о этой идеи я и хочу вам рассказать.

1. Теория

С чего начинаются все проблемы с сохранением настроек? Верно, с визуальных компонентов. Ведь по сути, все значения динамических настроек хранятся в тех или иных полях визуальных компонентов. Осознав это, я задался вопросом: «А что нам это дает?» А вот что:

  1. У любого компонента есть имя
  2. У любого компонента есть поле для хранения значения
  3. Все компоненты на форме можно легко найти

Три этих свойства решают все наши проблемы! Ведь достаточно просто пройтись по всем визуальным компонентам и запомнить их значения!

2. Выбор хранилища

Что сохранять мы нашли, но как это сохранять? Чаще всего, для сохранения настроек используют реестр или *.ini файлы. Я остановил свой выбор на *.ini файлах. Во-первых, загаживать реестр совершенно ни к чему. Во-вторых, *.ini файлы позволяют легко переносить настройки с одной машины на другую, что очень удобно. Ну и в-третьих, структура этих файлов очень располагает к нашему методу:

[название_блока1]
название_переменной1=значение_переменной1
название_переменной2=значение_переменной2

название_переменнойN=значение_переменнойN

[название_блока2]
название_переменной1=значение_переменной1
название_переменной2=значение_переменной2

название_переменнойN=значение_переменнойN

[название_блокаN]
название_переменной1=значение_переменной1
название_переменной2=значение_переменной2

название_переменнойN=значение_переменнойN

Эта структура идеально подходит для хранения наших настроек:

[тип_компонента]
название_компонента=значение

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

А как всё мило начиналось

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

2D скроллшутер за неделю
Lightforce, Commodore 64

Внимание, под катом большие картинки.
Читать полностью »

В этом году компании Embarcadero Technologies исполняется 20 лет. Среди отечественных пользователей компания известна, прежде всего, благодаря линии средств разработки Delphi, C++ Builder, RAD Studio. Однако известность на мировом рынке компания завоевала благодаря продуктами для специалистов по базам данных. В преддверии юбилея издание CNews опубликовало развернутое интервью с Кириллом Николаевичем Ранневым — бессменным главой представительства Embarcadero в России и странах СНГ.
image

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

Так случилось, что я активно использую Delphi в своей работе (программирование по работе, собственные открытые и закрытые проекты) и вот мне понадобилось написать программу, использующую открытую библиотеку компьютерного зрения OpenCV. Что же делать, ведь официально OpenCV использовать в Delphi невозможно, а перебираться на C ради одной программы слишком долго.

Но нет ничего невозможного…
Читать полностью »

в 8:55, , рубрики: Delphi, Embarcadero, юбилей, метки: , ,

Сегодня знаменательный день! 18 лет назад на Software Development Conference 95 West компания Borland презентовала первую версию продукта, ставшего впоследствии легендарным. Конечно же речь идет о Delphi.
image

Это сейчас некоторые разработчики, проникшись напускной наивностью, могут себе позволить спросить, а что, мол, Delphi еще не умерла?! А в былые времена этот инструмент безоговорочно доминировал на рынке средств разработки ПО. И я думаю, именно сегодня будет уместно немного вспомнить историю продукта и рассказать, что же с ним происходит сейчас.

Название Delphi продукт получил отнюдь не случайно. Дэнни Торп ( Danny Thorpe) предложил его в качестве кодового имени новой разработки. Одной из самых популярных СУБД на тот момент была Oracle. Как известно, древнегреческий Оракул находился в городе Делфы. Соответственно, фраза «Если ты хочешь говорить с Оракулом, ступай в Делфы», приобретала новый подтекст. Название продукта, как бы говорило о том, что Delphi — инструмент необходимый для работы с СУБД. Собственно, отчасти продукт позиционируется так и по сей день (и если честно, я считаю, что здесь он не имеет себе равных по сей день).

Сказать, что новый продукт получился удачным, — не сказать ничего.
Читать полностью »

Intro

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

В данной статье мы займемся созданием своего DLL инжектора. Что это такое, думаю, знают все. Такой способ внедрения стороннего кода достаточно популярен и удобен.

Писать DLL Injector мы будем на C++ в среде Microsoft Visual Studio 2010. Для создания динамически подключаемой библиотеки можно использовать любой инструмент, который вам по душе. Я же для создания библиотеки выбрал CodeGear RAD Studio 2009, язык Delphi( Object Pascal ).

Как же работает DLL Injection ?

Схема работы данного метода проста:

1) поиск и получение дескриптора нужного процесса
2) выделение памяти в процессе и последующая запись пути в DLL`ке по адресу, где произошло выделение памяти
3) создание нового потока в виртуальном пространстве процесса, дескриптор которого был получен.

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

ТЗ или о чем пойдет речь

Данный пост будет, как правило, интересен студентам, так как подобное задание было получено в качестве лабораторной работы по дисциплине «Лингвистические основы информатики».
Итак, давайте же рассмотрим техническое задание подробнее. Что нам требуется? А требуется нам создать анализатор, который будет разбивать заданный текст на языке Java по классам — ключевым словам, идентификаторам, операторам, пунктуаторам (сепараторам) и т.п., и выводить результат работы в таблицу. Таблица будет содержать следующие столбцы:

  • Токен
  • Спецификатор
  • Описание
  • Позиция
  • Длинна

Напомню, что токен — это последовательности символов в лексическом анализе в информатике, соответствующий лексеме.
Спецификатор описывает к какому классу относится токен. То есть, например, для токена «boolean» в таблице выведется «Keywords».
Ну описание, позицию и длину описывать, я думаю, не стоит.
Вроде бы задание понятно. Теперь разобьем его на подзадачи.
0) Изначально я бы посоветовал изучить спецификацию языка, для которого вы будете писать анализатор. Далее нам нужно:
1) Загрузить массив данных о наших ключевых словах, операторах и пунктуаторах, так как они уникальны.
2) Распарсить заданный текст на токены и определить их классы. (Распарсить — то же самое, что и разобрать, т.е. выбрать эти элементы из текста в переменные)
3) Занести данные о токенах в массив и отсортировать его.
4) Вывести данные в таблицу.
Читать полностью »

История реверс инжиниринга одного пушистого зверька

Тихим утром третьего января, когда Москва уже дремала после новогодних праздников, в нашей квартире раздался звонок в дверь. Почта наконец-то доставила посылку с новогодними подарками, заказанными на Амазоне. Среди прочего в ней находился и подарок для сына — электронный питомец Furby. Покупка его была, в общем-то импульсной. Игрушка значилась в бестселлерах новогоднего сезона и стоила относительно недорого. В сортах Furby я не разбирался, но когда-то давно что-то позитивное об игрушке слышал.

Сынишку, в силу его годовалого возраста, подарок не сильно впечатлил, а позволять бросать сложное электронное устройство на пол и отрывать этому устройству уши мне было жалко, и все шло к тому, чтобы убрать подарок на полку до лучших времен, однако мой взгляд пал на одну надпись на красочной упаковке...Читать полностью »

Расставляем точки над i в Delphi RAII Тема RAII в Delphi обычно замалчивается или же информация по этому вопросу ограничивается обсуждением полезности интерфейсов. Но интерфейсы поодиночке не дают многих желаемых возможностей. Когда в Delphi 2006 появилась перегрузка операций, приватные поля записей, собственные конструкторы и методы в записях и, казалось, было бы логично увидеть и автоматически вызываемый деструктор. И run-time позволяет, и в разделе запроса новых фич Delphi на протяжении нескольких лет в ТОП–10 висит запрос №21729 «Record Operator Overloading: Please implement «Initialize» and «Finalize» operators». Наверное, не судьба. Ничего, я покажу, как обойтись без несостоявшихся фич. Так как Delphi 7 живее всех живых, будут рассмотрены решения, совместимые с Delphi 7 в том числе

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

Интервью с CYBERMANIACЕсли вы знаете, и помните человека под ником CYBERMANIAC, для вас этот разговор будет похож на внезапное обнаружение половины студенческой зарплаты во внутреннем кармане старой куртки. Для тех кто никогда не слышал о Станиславе, я думаю будет тоже интересно почитать о небольшой, но уникальной искре времени начал интернета в далеком от столиц городов России глазами CYBERMANIAC'а. Он мне показался неизменным с 00 годов да и настолько изолированным, что очень уж захотел написать о нем.

Мы осторожно поговорим о жизни программиста в глубинке, о языках программирования с момента появления их в России: Forth, Borland Pascal, Delphi ,C#, MegaBasic, Java, SQL, C++. о япоском языке, о змеях, о национальных напитках, о Сократе, о советских объективах, о звездах, человеческих страхах.

CYBERMANIAC носит в себе большой опыт в крекинге, написании утилит, автор Neo Sign 0f Misery, древней электронной книги “Теоретические основы крегинга”, а так же автор многим любимого windows scanner и большого фотолюбителя-звездочета. Интервью получилось многим больше, чем я расчитывал. Но надеюсь, для вас будут звучать колокольчиками похожие мысли. Именно их мы и слушаем, когда читаем…
Читать полностью »


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