Motto

В тихом саду здравомыслия
Пусть на вас постоянно падают
кокосовые орехи пробужденности.
Чогьям Трунгпа РИНПОЧЕ


Версия для мобильного


среда, 17 августа 2011 г.

Обзор CnWizards. Часть 21: Шпаргалка по горячим клавишам

Регулярные публикации приводят посетителей также надёжно, как приносят проценты вклады в банках Москвы. Даже эффективнее. Идеи для новых публикаций есть, а времени на написание нет. Поэтому, пока опубликую пост из черновика. Сводная таблица горячих клавиш CnWizards. В таблице приведены комбинации клавиш по умолчанию. Оптимизированную для печати на листе А4 шпаргалку можно скачать здесь в виде PDF-файла. В блоге приведён более развёрнутый вариант.

Следует помнить, что если у вас установлено несколько наборов экспертов для Delphi, то некоторые горячие клавиши могут не работать. Например, ModelMaker Code Explorer по умолчанию резервирует для себя комбинацию Ctrl+Alt+U. И в MMX и в CnWizards все горячие клавиши можно изменить или отключить.

Все горячие клавиши поделены на 4 блока:

  1. Глобальные – работают везде в IDE.
  2. Дизайнер формы – горячие клавиши, работающие только в дизайнере формы.
  3. Редактор кода – горячие клавиши для редактора кода.
  4. Операции с выделенным текстом – работают в редакторе кода при наличии выделенного текста.

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

среда, 27 июля 2011 г.

Головокружительные возможности Dependency Injection и Delphi Spring. Часть 5. Основы Delphi Spring.

Это перевод публикации Ника Ходжеса: Getting Giddy with Dependency Injection and Delphi Spring #5 – Delphi Spring Basics.


Все переводы по Spring


Вступительное слово

Я много слышал о фреймворке Spring для Java. И даже знал, что аналогичный фреймворк был создан и для Delphi. Но у меня не хватало терпения сесть и разобраться. Также, как и с терминами “Внедрение зависимости” (Dependency Injection) и “Обращение управления” (Inversion of Control). Я часто встречал упоминания о них в разных статьях, но так и не смог уложить в своей голове, как применить эти знания к Delphi. И вот, наконец, я наткнулся на публикацию Ника. То, что я прочитал в этой публикации, запросто расставило всё по своим местам. Это было настолько потрясающе, что я решил обязательно перевести этот материал и опубликовать перевод у себя в блоге. Ник дал добро, и процесс пошёл.

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

На самом деле, это уже 5я часть в серии публикаций, посвящённых Dependency Injection в блоге Ника (полный список ищите по ссылке). Но первые четыре публикации просто подводят читателя к необходимости писать код, используя как можно меньше зависимостей между классами. Я не стал их переводить. На мой взгляд, там не так много много полезной и уникальной информации, чтобы тратить время на перевод. Пятая часть представляет собой совершенно уникальный материал, рассказывающий об основах использования Delphi Spring Framework.


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

четверг, 14 июля 2011 г.

Перевод Live templates Revisited

Это перевод поста Кэри Дженсена “Live templates Revisited”. Кэри также является автором новой книги Delphi in Depth: ClientDataSet. По адресу http://www.jensendatasystems.com/cdsbook/ вы можете найти дополнительную информацию об этой книге и заказать её.

This post contains translation of Cary Jensen’s article “Live Templates Revisited”. Cary is also the author of the new book Delphi in Depth: ClientDataSet. For more information about this book and links to order, please visit http://www.jensendatasystems.com/cdsbook/.

Ещё раз о живых шаблонах

Хотя шаблоны кода были в Delphi со времён 4й версии Delphi, они были очень простыми по сравнению с новой функцией живых шаблонов, впервые появившейся в Delphi 2006. Живые шаблоны предоставляют возможность делать вставку кода ещё более интеллектуальной, а также позволяют осуществлять интерактивную навигацию по изменяемым частям шаблона. Если вы ещё не используете их, то сейчас самое время рассмотреть их повнимательнее.

Рассмотрим вставленный шаблон показанный на следующем рисунке. Этот шаблон был создан путем выполнения шаблона forb, который вставляет цикл с блоками begin .. end.

Живой шаблон forb

Обратите внимание, что переменная итерации I подсвечена. Это позволит вам при желании быстро изменить имя переменной. Например, многие разработчики Delphi используют строчную переменную i в качестве переменной цикла (хотя Delphi сам по себе не чувствителен к регистру).

Вы также можете заметить, что I, а также 0 и List.Count окружены рамочкой. Эти области текста (в рамочке) являют собой точки синхронизации живого шаблона. После изменения I на i, нажмите Tab или Shift-Tab для перемещения между точками синхронизации шаблона. Во время перемещений, вы можете заметить, что подсказки (hints) изменяются, чтобы отобразить описание выбранной точки.


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

понедельник, 27 июня 2011 г.

Описание ModelMaker Code eXplorer

Обещанный обзор ModelMaker Code eXplorer.

Сегодня я расскажу об одном эксперте для Delphi, способным фантастически упростить рефакторинг. Разработан этот эксперт компанией ModelMakerTools.  У ModelMakerTools есть 2 продукта, которые часто путают:

  1. ModelMaker - инструмент для работы с UML в Delphi.
  2. ModelMaker Code eXplorer (MMX) - набор инструментов для рефакторинга. Существуют версии для Delphi и для Visual Studio. В этом посте я расскажу о версии для Delphi.

MMX интегрируется в Delphi 5 - 7, Delphi 2005 - 2010 и Delphi XE. Т.е. вы получаете удобный инструмент для рефакторинга практически в любых версиях Delphi. И этот инструмент удобнее стандартных мастеров для рефакторинга, встроенных в Delphi.

Почти все функции которые я здесь описываю, доступны в MMX начиная с версии 5.1. Текущая версия – 9.0. Для снимков экрана я использовал версию 8.

Скажу сразу, ModelMaker Code eXplorer – платный продукт. Новая лицензия стоит 99 евро. И купить его можно только через ShareIt.

Но на сайте доступна trial версия, которая работает в течение 30 дней без каких-либо ограничений. Более того каждое обновление продлевает срок trial-а. (раньше было так, как сейчас не знаю).

Ложка дёгтя: после окончания 30-дней триала, MMX может вызывать Access Violation-ы при работе с IDE. Например при нажатии Ctrl+Shift+вверх или вниз. Или в других случаях. В общем, если ваша IDE внезапно начала сыпать ошибками, проверьте, не закончился ли испытательный период у MMX. Чтобы убедится, Для этого достаточно открыть окно Code Explorer. Если trial окончен, там будет показано соответствующее сообщение. Такие AV в IDE, это побочный эффект от защиты от взломов trial-а и способный серьёзно потрепать нервы. Поэтому предупреждаю о нём сразу. В остальном, это прекрасный и удобный инструмент для Delphi программиста.

Скриншоты MMX на официальном сайте. История изменений. На сайте продукта доступны видеоролики, демонстрирующих функционал MMX. Это что касается официальной документации. А тех, кому интересны личные впечатления, прошу пожаловать под кат.

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

Это наверное самый большой пост у меня в блоге. Более 2000 слов, 13 тысяч знаков без пробелов. И картинки. Надеюсь, что для вас он окажется полезным.


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

пятница, 24 июня 2011 г.

Переход на юникод 3. С Ehlib 3.6 на Ehlib 5.x

Продолжаю делиться опытом по переводу своего проекта на юникод. В этот раз я остановлюсь на обновлении библиотеки Ehlib с версии 3.6 на версию 5.2. Как я уже говорил, я проводил обновление стараясь сделать так, чтобы большая часть кода могла компилироваться и в Delphi 6 и в Delphi 2010.

С Ehlib-ом было всё просто. Мы без раздумий решили покупать обновление, тем более что версия 5.х содержит в себе массу отличных фич. Т.е. конечно, порядка ради мы с коллегами обсудили вариант обновить самим. Но решили, что новые фичи Ehlib-а, нам будут более чем полезны. Тем более, что по соотношению цена/качество/удобство - это самый лучший DbGrid для Delphi. Ещё рассматривался вариант с покупкой DevExpress, но высокая цена и необходимость переделывать те наработки, что уже сделаны для Ehlib-а убедили нас пока не связываться с TcxGrid.

Настройка Delphi для работы разными версиями библиотек.

Пятая версия Ehlib была распакована в отдельную папку Ehlib5. Также, в виде отдельной папки она была внесена в систему контроля версий. Папку с исходниками Ehlib 3.6 (предположим, что она называлась Ehlib3) я не трогал, ведь мне необходимо собирать проект и с 3й и с 5й версией библиотеки.

На данном этапе вся работа проходила в Delphi 6. Следующим пунктом встал вопрос, а как объяснить Delphi,  какую из версий Ehlib-а использовать? Для исходного кода проблема разрешилась с помощью введения в свой код новой директивы компилятора WANT_EHLIB5.

Но что же делать с dcu-файлами, и с настройками путей до исходных файлов Ehlib? Ведь и Ehlib 3 и Ehlib 5 содержат юниты с одинаковыми именами. Как объяснить Delphi, что когда я собираю проект с директивой WANT_EHLIB5 она должна искать исходники в папке Ehlib5, а когда без этой директивы, то исходники должны браться из папки Ehlib3?

Идеального решения я не нашёл.


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

Постоянные читатели