Страницы

воскресенье, 3 января 2010 г.

Самые интересные публикации 2009 года

В этом году в русскоязычном Delphi-сообществе было опубликовано огромное количество материалов. Можно было запросто пропустить что-то интересное. Я постарался собрать в одной публикации ссылки на наиболее интересные публикации 2009 года. Все публикации имеют прямое отношение к Delphi. Получилось довольно много. Большое спасибо любезным авторам!

 

Михаил Мохов: Аспектно-ориентированное программирование и Delphi – заметка об АОП и Delphi, + ссылки на фреймворки.

Дмитрий Ларионов: Превращаем главное скрытое окно программы в действительно главное окно программы – как избавится от недостатка невидимого окна TApplication в программах написанных на Delphi версии <= 2006.

Александр Шарахов: Почему мне не нравится TDateTime – достоинства и недостатки типа данных TDateTime в Delphi.

Алексей Легкунец: Что нужно знать программисту и пользователю, работающему с программами, строящими графики функций

Упаковка сложных типов данных в Delphi

Описание работы с Vista UAC в Delphi от Александра Божко

  1. Часть 1. Введение.
  2. Часть 2. Варианты использования.
  3. Часть 3. Повышение прав по запросу с использованием COM Elevation Moniker.

Технологии интеллектуального редактирования в D2009 (рефакторинг) – Часть 1. Часть 2. Часть 3. – описание работы с встроенными в Delphi инструментами для рефакторинга.

Подробное описание Ribbon Controls, появившихся в Delphi 2009 от Влада (webdelphi.ru). Ribbon Control шаг за шагом:

  1. Шаг 1 – визуальная разработка интерфейса.
  2. Шаг 2 – дополнительные элементы интерфейса
  3. Шаг 3 – работа со ScreenTips.
  4. Шаг 4 – создаем уникальный стиль или как работать в RibbonSkins.

Алексей Тимохин: О переводе крупного проекта на Delphi 2009 - перевод статьи: “Upgrading a major project to Delphi 2009”,  Lars B. Dybdahl.

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

Алексей Тимохин: Сравнительная таблица Delphi-компонентов для работы с СУБД Oracle.

Дженерики

Алексей Тимохин: Обобщённое программирование(generics) в Delphi 2009 для Win32. Перевод статьи Sébastien DoeraeneGenerics with Delphi 2009 Win32 (With, as a bonus, anonymous routines and routine references)

Алексей Тимохин: Сравнивая дженерики в C#, C++ и Delphi(Win32) - Перевод статьи: Comparing C#, C++, and Delphi (Win32) Generics. Автор: Craig Stuntz

Delphi 2010

Краткое перечисление новинок в Delphi 2010 от Алексея Тимохина.

Skiminog: Weaver — первые впечатления

Обзор механизма естественного ввода в RAD Studio 2010 от Skiminok.

Описание форматировщика кода в Delphi 2010

  1. Delphi 2010 Formatter. Иллюстрированный справочник. Раздел Indentation
  2. Delphi 2010 Formatter. Иллюстрированный справочник. Раздел Spaces

Обзор новинок в Delphi 2010 от Александра Божко

  1. Delphi 2010. Что нового? #1
  2. Delphi 2010. Что нового? #2
  3. Delphi 2010. Что нового? #3
  4. Delphi 2010. Что нового? #4": Изменения в компиляторе
  5. Delphi 2010. Что нового? #5: Изменения в отладчике.
  6. Delphi 2010. Что нового? #6: Изменения в VCL.

RTTI в Delphi 2010:

  1. Delphi 2010 RTTI – Основы.
  2. Delphi 2010. RTTI и атрибуты
  3. Использование атрибутов и наследников TCustomAttribute
  4. Углубленное исследование TRTTIType
  5. Углубленное исследование наследников TRttiMember (часть I), свойства и поля
  6. Углубленное исследование наследников TRttiMember (часть II) Методы
  7. Почему я вызываю TRttiContext.Create() и TRttiContext.Free()
  8. Введение в TValue

Описание библиотек JCL и JVCL:

Общее описание библиотеки Jedi Code Library. JCL 3.35.

Серия постов, описывающих некоторые компоненты из библиотеки Jedi Visual Control Library.

Серия публикаций от Александра Алексеева.

Обработка ошибок в Delphi-программах:
  1. Обработка ошибок – фундаментальное исследование по обработке ошибок в Delphi. Сравниваются разные подходы (коды ошибок и исключения), рассматривается механизм возникновения и обработки исключений, средства диагностики исключений (Jcl, FastMM, EurekaLog, Windows Error Reporting), даются советы о том, как правильно обрабатывать ошибки. Подробно описывается работа с отладчиком и многое другое. Из-за огромного размера статьи доступен вариант в PDF.
  2. Access Violation в деталях - подробный разбор самой частой ошибки в Delphi-программах. Что это такое, откуда берётся, возможные причины, как диагностировать, как исправлять.
  3. Ищем утечки памяти – статья о том, как искать утечки памяти в Delphi программах с помощью EurekaLog, FastMM, MemProof/AQTime.
  4. Настройки проектов в Delphi с точки зрения поиска ошибок – как настроить проект, чтобы получить максимум информации в отчёте об ошибке.
  5. Как читать Log-файлы отчётов об ошибках EurekaLog, FastMM, JCL – как проанализировать стек вызовов и найти место возникновения ошибки. Типичные ошибки новичков.
  6. EurekaLog с точки зрения ShareWare-разработчика – обзор EurekaLog с позиции разработчика ShareWare-программ (вопросы защиты кода).
  7. Anti-freeze в EurekaLog – отслеживание зависания программы с помощью EurekaLog.

Менеджеры памяти в программах – описание устройства менеджера памяти в Delphi. Зачем нужен, как используется, межмодульное взаимодействие.

Создание приложений для Windows Vista в Delphi (до 2007) 

  1. часть 1 - перевод Creating Windows Vista Ready Applications with Delphi. Автор: Nathanial Woolls.
  2. часть 2 - перевод Creating Windows Vista Ready Applications with Delphi. Update - January 2007. Автор: Nathanial Woolls.

Работа с указателями в Delphi для Win32. - перевод Addressing pointers. Автор: Rudy Velthuis

Параметры типа открытый массив и "array of const" - перевод Open array parameters and array of const. Автор: Rudy Velthuis.

PChars: сами строки не включены - перевод PChars: no strings attached. Автор: Rudy Velthuis

BOOL, Boolean и Integer - перевод BOOL, Boolean and Integer. Автор: Christian Wimmer.

Что люди любят делать не так в IUnknown.QueryInterface - перевод The ways people mess up IUnknown::QueryInterface. Автор: Реймон Чен.

Особенности работы с DllMain с примерами на Delphi:

 

Перевод серии статей Реймонда Чена – “Как управлять IContextMenu” с примерами на Delphi.
  1. Как управлять IContextMenu, часть 1 - вступительное слово
  2. Как управлять IContextMenu, часть 2 – показ контекстного меню
  3. Как управлять IContextMenu, часть 3 - место вызова
  4. Как управлять IContextMenu, часть 4 - контекст клавиш
  5. Как управлять IContextMenu, часть 5 - обработка сообщений от меню
  6. Как управлять IContextMenu, часть 6 - отображение подсказок меню
  7. Как управлять IContextMenu, часть 7 - вызов пункта меню по-умолчанию
  8. Как управлять IContextMenu, часть 8 - оптимизируем вызов команды по-умолчанию
  9. Как управлять IContextMenu, часть 9 - добавление своих команд
  10. Как управлять IContextMenu, часть 10 - компоновка расширителей меню - основы
  11. Как управлять IContextMenu, часть 11 - компоновка расширителей меню - компоновка
 
Перевод серии статей Реймонда Чена: Dragging a shell object, part 1: Getting the IDataObject с примерами на Delphi.
  1. Перетаскивание объекта оболочки, часть 1: получение IDataObject
  2. Перетаскивание объекта оболочки, часть 2: добавляем перемещение
  3. Перетаскивание объекта оболочки, часть 3: определение "оптимизированного" перемещения
  4. Перетаскивание объекта оболочки, часть 4: добавляем красивую иконку
  5. Перетаскивание объекта оболочки, часть 5: заставляем кого-нибудь делать за нас работу

 

Серия заметок от Александра Алексеева о создании системы плагинов на Delphi:
  1. Часть 1. Варианты реализации (DLL, COM, пакеты, использование интерфейсов)
  2. Часть 2. Создание точки входа.
  3. Часть 3. Реализация плагина в пакете, в виде DLL.
  4. Часть 4. Объяснение работы пакета как DLL.
  5. Часть 5. Загрузка пакетов в виде DLL.
  6. Часть 6. Интерфейс IInit.
  7. Часть 7. Обработка ошибок в плагинах.
  8. Часть 8. Объявление дополнительных интерфейсов и передача строк.
  9. Часть 9. Совместимость с другими языками. Обмен данными переменного размера.
  10. Часть 10. Пример реализации.
  11. Часть 11. Исходники.
Кросспост на Хабр.

5 комментариев:

  1. Неожиданно и приятно было увидедь упоминание своей статьи "превращаем главное невидимое окно..." у вас. Правда радость омрачается тем, что до ума этот код так и небыл доведён. То один то другой недочёт где-нибудь да вылезет. И всё это спотыкание из-за того, что как-то не расчитана виндус на работу многооконной программы.
    Например, надо что бы помимо главного окна на экране были ещё два-три окна. Задав им владельца при создании, они будут всегда его перекрывать, т.е. выше по z-order, не задав владельца, все они будут иметь свои кнопки в taskbar'e.
    Если сделать невидимое окно и делать его владельцем для всех "главных" окон программы(как и сделано в delphi), то в висте получается такая ерунда - в preview видна пустота.
    Если сделать невидимое окно и делать его владельцем для всех "главных" окон программы, но кнопку в taskbar'е вывести от одного из окон, то почти невозможно становится управлять сворачиванием/разворачиванием программы. Окно(владелец кнопки в taskbar'е) начинает всё время вылезать на передний план.

    Для однооконных программ сейчашний вариант подойдёт, для многоокооных - нет(главное окно вылезает на передний план).

    В виндус 7 кажется осознали свою ошибку и preview наконец научились показывать и для свёрнутых программ, так что в семёрке это уже не актуально. Почему столько лет немогли исправить в висте непонятно.

    Текст в самой статье уже давно не соответствует версии в прилагаемом архиве. Текст писался для первого-пробного-дискуссионного варианта. К сожалению "королевство" не очень приспособлено к ведению "личных веток". Мало того что я закалебал модераторов обновлениями архива, так я бы еще и достал бы их обновлением статьи...

    Извините, если сумбурно написал - температура 38...

    ОтветитьУдалить
  2. Отличная подборка материалов!
    Пока мы тут отдыхали, Вы, Алексей потрудились на славу!

    ОтветитьУдалить
  3. Классная подборка! Спасибо.

    ОтветитьУдалить
  4. Дмитрий, мне самому очень приятно что Вы заметили эту ссылку. :)
    А по теме вопроса - я сам привык мирится с подобными недостатками Delphi, и стараюсь не трогать те механизмы, которые выходят за рамки "форм и компонентов", но с удовольствием читаю статьи вроде вашей, так как они позволяют лучше понять внутреннюю оконную кухню Винды.

    ОтветитьУдалить