Motto

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


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


воскресенье, 11 сентября 2011 г.

Lazy Delphi Builder 1.5.1.185 от 11.09.2011.

Update: Обновил архив. В первом архиве были exe-шки от предыдущей версии.

Времени на блог и проекты практически нет. Но с предыдущего релиза Lazy Delphi Builder накопилось достаточно новых фич и исправлений для выпуска новой версии.

Основное нововведение этой версии – это возможность продолжить неудавшуюся сборку. При сборке большого числа пакетов иногда может случится ошибка в одном из пакетов. После устранения причин ошибки раньше приходилось запускать сборку с самого начала. Теперь есть возможность продолжить собирать пакеты. В режиме “Continue Build” будут собраны только те пакеты, которые не были собраны в прошлый раз.

Также добавлена возможность поиска по дереву файлов и журналу инсталляции. И многое другое (см. ниже). И конечно же поддержка Delphi XE2 (пока только для dcc32.exe).

Подробная история изменений под катом.


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

среда, 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 для 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?

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


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

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

Описание CnPack IDE Wizards часть 20: Формы настройки мастеров. Скриншоты.

Немного отвлекусь от темы перехода с Delphi 7 на юникод, для продолжения описания CnWizards.

Это двадцатая запись в серии "Эксперты для Delphi: описание CnPack Wizards”. В прошлый раз я начал описание настроек CnPack Wizards, точнее просто опубликовал скриншоты основных форм настройки с кратким описанием. Этот пост будет сделан в таком же духе. Я не буду вдаваться в детали и просто покажу как выглядят все формы настройки. Здесь будут скриншоты и ничего более. Правда в отличие от предыдущего поста, здесь будет не три картинки, а штук тридцать.

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

(осторожно, траффик! под катом много картинок.)


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

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

Переход на юникод 2. План перехода и сторонние библиотеки.

Как я уже писал, я выбрал для перехода стратегию, требующую того, чтобы код приложения собирался как в Delphi 6, так и в Delphi 2010. Эта стратегия была выбрана как наиболее универсальная и позволяющая в любой момент переключиться на стратегию 3 и продолжить работу с копией кода программы заточенной только под одну юникодную версию Delphi.

Исследование ситуации

Итак, начинать надо с пакетов. Без них всё-равно не собрать программу. Первым делом я запустил Lazy Delphi Builder, просканировал папки с исходниками и стал пробовать компилировать каждый из пакетов, поочерёдно выписывая в блокнот имена пакетов, отказывавшихся собираться на Delphi 2010. Получился первый список проблемных пакетов. Конечно, на самом деле я не компилировал каждый из пакетов. Ведь понятно, что если пакет X не скомпилировался, то и все пакеты, которые зависят от пакета X также не компилироваться не будут.

Большая часть самописных библиотек зависела от сторонних библиотек, так что переход на юникод надо было начинать со сторонних либ.

Общий план перехода

  1. Обновить все библиотеки от сторонних производителей.
  2. Добиться, чтобы программа стабильно работала на Delphi 6 после завершения работы над первым пунктом.
  3. Если сторонние пакеты больше не поддерживаются, перевести их на юникод собственноручно или заменить аналогами поддерживающими юникод.
  4. Добиться, чтобы программа компилировалась и стабильно работала после завершения работы над третьим пунктом.
  5. Сделать необходимые изменения в коде самописных пакетов, чтобы они могли собираться как в Delphi 6 так и в Delphi 2010 и продолжали стабильно работать в Delphi 6.
  6. Сделать необходимые изменения в коде приложения, чтобы его можно было собрать и в Delphi 6 и в Delphi 2010.
  7. После сборки в Delphi 2010 протестировать работу, и начать исправлять ошибки связанные с переходом на Delphi 2010. При каждом исправлении проверять, что приложение собирается и работает и 6й и в 2010й версии Delphi.

Сторонние библиотеки

Из сторонних библиотек у меня использовались:


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

суббота, 4 июня 2011 г.

Переход на юникод 1: Поиск стратегии.

Обещанная статья о переводе большой программы с Delphi 6 на Delphi 2010 (для Delphi 2009 и Delphi XE (2011), ситуация будет аналогичной). Материала получилось довольно много, поэтому я разобью его на несколько постов.

Дано

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

Что надо получить?

Работающую версию программы с поддержкой юникода для D2010. Из-за большого числа клиентов, крайне желательно, чтобы обновлению программы (включая базу данных) с неюникодной версии на юникодную происходило по возможности безболезненно. В идеале сделать так, чтобы с одной и той же базой данных можно было работать как из уникодной версии программы так и из Ansi-версии.

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

Стратегии перехода

Стратегии для перехода на Юникод:

  1. Сделать так, чтобы один и тот же код мог собираться как в Delphi 6, так и в Delphi 2010 и чтобы программа работала стабильно и без ошибок.
  2. Начать проект с нуля только на Delphi 2010, частями перенося код из версии для D6.
  3. Сделать копию стабильной версии проекта и вести работу по переходу на юникод на копии, оставляя нетронутой стабильную версию для Delphi 6.

Плюсы и минусы стратегий


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

пятница, 27 мая 2011 г.

Текучка 14: Май 2011. Вести с полей.

Это будет пост ни о чём. На 80% оффтопик. На 20% – подведение итогов. whatever.

Have a Seat, Lets Talk... by ...-Wink-..., on Flickr

Интересно, кто сейчас читает мой блог? Как вы оцениваете работу блога? Аналитика от гугла показывает, что в день в среднем происходит около 250 визитов. Но я так понимаю, что львиная доля большая часть этих визитёров – какие-то веб-сервисы. Поэтому хотелось бы составить примерное представление, о числе живых читателей. Оставьте комментарий пожалуйста.

Здесь же можно написать свои пожелания по блогу, если таковые есть. Давно я не предлагал пообщаться в комментах. Вот давайте и пообщаемся как-нибудь. Вот, например, скажите, используете ли вы ModelMaker Code eXplorer? А пробовали ли работать с Lazy Delphi Builder, и каковы впечатления?

О блоге. Сделал отдельную страничку со ссылками на все известные мне статьи о JCL и JVCL.

Влад тут протестировал работу с Google Online Page Speed API из Delphi и зело заинтриговал. Я не знал о такой штуке. Но раз есть API, значит должен быть и сервис. Первый же поисковый запрос вывел на страницу Google Online Page Speed. Интересная штука. Этот инструмент позволяет провести анализ сайта с точки зрения быстродействия, выдаёт список рекомендаций по ускорению работы и даёт оценку быстродействия сайту. Где-то год назад чтобы проверить быстродействие я устанавливал плагин Y!Slow в Firefox. Как оказалось такая же штука уже встроена в Google Chrome. У меня, кстати получилось набрать 86 баллов из 100 (больше - лучше).


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

четверг, 26 мая 2011 г.

Описание CnPack IDE Wizards часть 19: настройки CnWizards

Это девятнадцатая запись в серии "Эксперты для Delphi: описание CnWizards”. В прошлый раз я описывал класс для отправки отладочных сообщений TCnDebugger. В этот раз я расскажу о настройках CnPack Wizards. Сейчас, я не буду вдаваться в детали и просто покажу как выглядят все формы настройки. Эта публикация посвящается тем, кто, ещё не установил CnWizards, из-за того “там слишком много ненужных мне функций”. Надеюсь что этот пост послужит лучшим доказательством того, насколько легко можно отключить все “ненужные функции” и как легко можно настроить “нужные” функции на свой вкус.

CnPack Wizards – комплексный эксперт состоящий из модулей (мастеров). Любой из модулей можно настроить под себя или просто отключить. Очень удобно. Я снимаю шапку перед разработчиками CnWizards. Архитектура этого эксперта достойна всяческого восхищения.

А пока вы читаете этот пост, я почитаю SEO статьи по теме "раскрутка интернет магазина", особенно по части раскрутки по long-tail (супернизкочастотных) запросов.

Настройка CnWizards

Диалог настроек CnWizards открывается через Главное меню->CnPack->Options.


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

четверг, 19 мая 2011 г.

Описание CnPack Wizards часть 18: cnDebug.pas

Продолжаю обзор CnWizards – бесплатного эксперта для Delphi с открытым исходным кодом от китайских программистов. В прошлый раз я рассказывал о CnDebugViewer-е – просмотрщике отладочных сообщений. Сегодня я расскажу как эти сообщения отправлять.

C помощью CnDebug из программы можно отправлять строковую информацию, integer, float, color и RTTI-информацию об объектах и компонентах. CnDebug также умеет записывать в журнал информацию о возникающих в программе исключениях, вместе с содержимым стека вызовов.

Файлы и директивы компилятора

Для работы CnDebug нам понадобятся файлы, расположенные в папке C:\Program Files\CnPack\CnWizards\Source\

  • cnDebug.pas – обязательно. Здесь объявлен основной класс отладчика: TCnDebugger.
  • CnPack.inc – обязательно. Здесь определяются директивы компилятора.
  • CnPropSheetFrm.pas и CnPropSheetFrm.dfm – опционально. Только если объявлена директива компилятора SUPPORT_EVALUATE (по умолчанию объявлена). В этом модуле описана форма инспектора CnDebug, предназначенной для изучения RTTI информации об объектах.

Директивы компилятора, влияющие на работу CnDebug:


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

понедельник, 16 мая 2011 г.

Описание CnPack Wizards часть 17: cnDebugViewer

Это семнадцатая публикация в серии: Эксперты для Delphi: Описание CnWizards. В прошлый раз я писал о Тестере зависимостей CnWizards (Relation Analyzer) – утилите для анализа зависимостей между скомпилированными и исходными файлами. Сегодня я расскажу о CnDebugViewer.exe - просмотрщике отладочной информации отправленной из модуля CnDebug.pas.

CnDebugViewer – программа для отображения отладочной информации посланной программой с помощью модуля CnDebug.pas а также с помощью стандартной API функции OutputDebugString. Полученная информация отображается в виде дерева. Её можно фильтровать, сохранять и загружать для дальнейшего изучения. Только распечатывать не умеет. Здесь, конечно не нужна широкоформатная интерьерная печать, но возможность вывести на печать хотя бы в каком-то виде была бы полезной.

Для отправки сообщений с отладочной информацией в CnWizards входит модуль CnDebug.pas содержащий определение класса TcnDebugViewer умеющего отправлять разнообразную информацию просмотрщику. Для получения информации из TcnDebugger-а используется отображаемый в память файл (Memory mapped file).


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

четверг, 12 мая 2011 г.

Описание CnPack Wizards часть 16: Описание Relation Analyzer.

Это шестнадцатая запись в серии: Delphi эксперты: CnWizards. В прошлый раз я завершил краткий обзор утилит из CnWizards. В этот раз я подробно опишу Relation Analyzer (Тестер зависимостей).

Relation Analyzer может помочь лучше разобраться в зависимостях большого числа bpl-ок, а также изучить собранные в Delphi программы – посмотреть список использованных юнитов, например.

В этой программе есть два режима анализа:

  1. Анализ исполняемых файлов. Даёт возможность:
    • Посмотреть список необходимых для работы пакетов. Для bpl-ок это то что обычно пишется в секции requires .dpk файла. Для exe-шек – это список необходимых пакетов времени исполнения (Runtime Packages).
    • Посмотреть список необходимых для работы пакетов и библиотек (bpl и dll).
    • Посмотреть список модулей (unit) использованных при компиляции.
    • Посмотреть, в каких исполняемых файлах использовуется определённый модуль (unit).
    • Посмотреть список общих использованных модулей, для нескольких исполняемых файлов.
  2. Анализ зависимостей между бинарными файлов и исходными файлов. Даёт возможность:
    • узнать, какие модули придётся перекомпилировать после изменения interface и implemenatation частей определённого модуля. Эта опция позволяет заранее узнать, где может появится ошибка компиляции: This unit was compiled with different version of ‘xxx’.

Язык не повернётся назвать GUI этой программы простым. Поэтому, я начну описание именно с интерфейса. Хотя GUI и не такой сложный, как может быть у crm системы, предназначенной для учёта данных по огромному числу клиентов . Но всё же, разбираться с ним дольше, чем, найти земельный участок в Рязани.

Итак. При запуске программы видны 5 закладок. Назначение каждой:


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

вторник, 10 мая 2011 г.

Текучка 13: “шаманский метод Гео” + RegisterClass = EFilerError

Я тут наткнулся на ошибку, появившуюся вследствии использования "Шаманского метода Гео". Уже второй раз натыкаюсь на неё и второй раз удивляюсь тому, откуда она взялась.

Симптомы ошибки

При вызове процедуры RegisterClass для класса появлется исключение EFilerError с текстом ошибки: “A class named XXX already exists”.

Расследование показало что эта ошибка появляется, если RegisterClass был вызван дважды для разных классов с одним и тем же названием.

Казалось бы, причём тут метод Гео?

А вот при том, что именно из-за подмены одного класса другим у меня в коде и возникла ситуация вызвавшая ошибку. В частности, я использую “метод Гео” для подмены стандартного TDbGrid-a своим наследником от TDbGridEh. Для работы моей программы (crm системы) мне необходимо зарегистрировать свой DbGrid. Так что при старте программы я спокойно регистрирую свой класс. А после получаю вышеупомяную ошибку при вызове одного из методов одной из сторонних библиотек, которой также необходимо зарегистрировать класс TDbGrid.

Пример кода вызывающего ошибку:


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

пятница, 6 мая 2011 г.

Описание CnPack Wizards часть 15: Дополнительные утилиты. Часть 2.

Это пятнадцатая запись в серии: Эксперты для комфортной работы в системе Delphi: CnWizards.  Официальные сайты проекта: www.cnpack.org и Google Code.

Вчера, я начал описание утилит входящих в CnWizards:

  • ASCII Chart,
  • утилите для импорта/экспорта конфигурации CnWizards,
  • утилите для резервного копирования/восстановления настроек Delphi IDE
  • конвертере DFM-файлов.

Сегодня я продолжу рассказ об утилитах и расскажу о следующих:

  • CnPack Debug Viewer
  • Утилите для быстрого отключения Мастеров CnPack
  • Утилите для управления внешними мастерами Delphi (экспертами)
  • Утилите для анализа зависимостей между юнитами и бинарными файлами

Debug Viewer

Название файла: CnDebugViewer.exe

Просмотрщик для отображения отладочной информации, посланной программой с помощью OutputDebugString и методов класса TCnDebugger, содержащегося в файле CnDebug.pas. C помощью CnDebug.pas из программы можно отправлять строковую информацию, integer, float, color и RTTI-информацию об объектах и компонентах. CnDebug также умеет устанавливать глобальный обработчик исключений и записывать в журнал содержимое стек и другие данные. Я напишу об этом подробнее в следующих постах.

А CnPack Debug Viewer позволяет просматривать эту информацию в удобном виде (с использованием иерархий, группировок, фильтров). Аналогичный инструмент, но попроще, входит и в состав gExperts.


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

четверг, 5 мая 2011 г.

Описание CnPack Wizards часть 14: дополнительные утилиты, часть 1

Это четырнадцатая запись в серии: Эксперты для комфортной работы в системе Delphi: CnWizards. В прошлый раз я рассказывал о шаблонах кода и комментариев в CnPack Wizards. В этот раз я расскажу об утилитах, входящих в состав CnPack мастеров IDE.

Официальные сайты проекта: www.cnpack.org и Google Code.

Утилиты в CnPack IDE Wizards

Помимо расширений для Delphi IDE, CnWizards включают в себя несколько утилит, которые можно запустить из меню программ (Start Menu->Programs). Все эти файлы находятся в папке CnWizards (c:\Program Files\CnPack\CnWizards\)

Меню программы CnWizards


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

вторник, 12 апреля 2011 г.

Lazy Delphi Builder 1.4.0.175

Lazy Delphi Builder Grunge Stamp logo

Выложил Lazy Delphi Builder 1.4.0.175. Скачивать на домашней странице: www.LazyProject.info. На всякий случай, есть зеркало на Google Code. Об ошибках сообщать здесь или на почту/скайп, в комментариях к посту, или в Issues на Google Code.

Из забавного. Все, кому я показывал плакат опубликованный в предыдущем посте, отметили что на логотипе изображён античный храм болтающийся на висилице. =))) Так вот. И на самом деле там изображён подъёмный кран!

Пару слов о проекте, для тех кто забыл. Lazy Delphi Builder задумывался как инструмент для упрощения сборки проектов/компонентов. Он просканирует папки, найдёт там все нужные файлы. Предложит выбрать что собирать, а что нет. Позволит указать параметры сборки, и папки куда складывать полученные файлы. Соберёт всё, как надо и даже скопирует все файлы ресурсов в одну папку. А также сохранит все выбранные файлы с настройками на диске, и сможет запустить его позже. Умеет подменять часть путей переменными. Хранит настройки в текстовом файле.

Всю прошлую неделю работал над проектом ежедневно по несколько часов в день. Вылизывал работу консольной версии и делал режим быстрой компиляции. В самом конце сделал возможность подменять значения Environment variables из командной строки. Над инструкцией поработать не успел.

Работы над проектом уйма. И в первую очередь работы над упрощением программы. С одной стороны Lazy Delphi Builder позволяет собрать все файлы (и dcu, и даже ресурсы) в указанных пользователям папках. А с другой, почти никто из опрошенных мной программистов не видит в этом нужды. =) А те, кто видят, предпочитают ручками вызывать dcc32.exe с нужными параметрами и LazyDB им ни к чему. Надо как-то упрощать работу программы, ибо она получилась сложной. Ведь даже со стиральной машиной самсунг проще разобраться, чем с этим.

История изменений


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

понедельник, 4 апреля 2011 г.

Lazy Delphi Builder 1.3.0.163 (стабильная версия)

Рекламный постер Lazy Delphi Builder

Вышла новая версия Lazy Delphi Builder 1.3.0.163.

Скачивать на домашней странице: www.lazyproject.info.

На случай, если домашняя страница не открывается, вот зеркало на Google Code

Об ошибках сообщать здесь или на почту/скайп, в комментариях к посту.


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

вторник, 15 марта 2011 г.

Лучшие Delphi посты за 2010 год

Самое интересное в Delphi блогах за 2010 год.

Смотрите также: Самые интересные публикации 2009 года и Самое интересное в Delphi блогах за 2011 год.

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


Оглавление


Переводы о Delphi 2010 на Хабре


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

воскресенье, 6 марта 2011 г.

Итоги 2010 года в TDelphi Blog-e

Я тут подумал, что хорошо бы подвести итоги по прошедшему 2010 году (пусть уже и март на дворе). В прошлом году, я начинал подводить итоги, с мыслью “год, как год – ничего особо и не сделал”, но когда начал вспоминать – оказалось, что список получился весьма внушительный. Этот год прошёл проще. Большая часть событий коснулась сферы личной жизни. В работе и блогосфере не было почти никаких изменений. Последние полгода даже TDelphi-блог был заброшен.

Завёл отдельный бложик для понравившейся музыки. Музыку выкладываю в виде клипов с Youtube. Что-то типа записной книжки, чтобы изредка заходить и переслушивать. Адрес: http://muzyaka.blogspot.com/.

TDelphi-блог

Я уже писал о своём намерении получить от блога какую-то финансовую отдачу и даже подводил в мае неутешительные итоги. Но летом ситуация изменилась. На рекламе в блоге (в основном на Блогуне) удалось заработать примерно 3500 рублей. Эта сумма была бы больше, если б отпуск не затянулся=). Для заработка за год, сумма совсем несерьёзная. Но зато это оказалось для меня хорошим мотиватором к написанию постов. А вот по предложению помощи по переводу программ с BDE на FibPlus заказов не поступало.

В этом году в блоге было опубликовано больше всего статей не связанных с Delphi.

По сравнению с прошлым годом, число посещений в TDelphi-блоге увеличилось почти в 2 раза (см. картинку ниже). Блог переехал на Блогспот в феврале 2009, и первые полгода просто набирал посетителей.

image


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

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