В этом году в русскоязычном Delphi-сообществе было опубликовано огромное количество материалов. Можно было запросто пропустить что-то интересное. Я постарался собрать в одной публикации ссылки на наиболее интересные публикации 2009 года. Все публикации имеют прямое отношение к Delphi. Получилось довольно много. Большое спасибо любезным авторам!
Михаил Мохов: Аспектно-ориентированное программирование и Delphi – заметка об АОП и Delphi, + ссылки на фреймворки.
Дмитрий Ларионов: Превращаем главное скрытое окно программы в действительно главное окно программы – как избавится от недостатка невидимого окна TApplication в программах написанных на Delphi версии <= 2006.
Александр Шарахов: Почему мне не нравится TDateTime – достоинства и недостатки типа данных TDateTime в Delphi.
Алексей Легкунец: Что нужно знать программисту и пользователю, работающему с программами, строящими графики функций
Упаковка сложных типов данных в Delphi
Описание работы с Vista UAC в Delphi от Александра Божко
- Часть 1. Введение.
- Часть 2. Варианты использования.
- Часть 3. Повышение прав по запросу с использованием COM Elevation Moniker.
Технологии интеллектуального редактирования в D2009 (рефакторинг) – Часть 1. Часть 2. Часть 3. – описание работы с встроенными в Delphi инструментами для рефакторинга.
Подробное описание Ribbon Controls, появившихся в Delphi 2009 от Влада (webdelphi.ru). Ribbon Control шаг за шагом:
- Шаг 1 – визуальная разработка интерфейса.
- Шаг 2 – дополнительные элементы интерфейса
- Шаг 3 – работа со ScreenTips.
- Шаг 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 Doeraene “Generics 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
- Delphi 2010 Formatter. Иллюстрированный справочник. Раздел Indentation
- Delphi 2010 Formatter. Иллюстрированный справочник. Раздел Spaces
- Delphi 2010. Что нового? #1
- Delphi 2010. Что нового? #2
- Delphi 2010. Что нового? #3
- Delphi 2010. Что нового? #4": Изменения в компиляторе
- Delphi 2010. Что нового? #5: Изменения в отладчике.
- Delphi 2010. Что нового? #6: Изменения в VCL.
RTTI в Delphi 2010:
- Delphi 2010 RTTI – Основы.
- Delphi 2010. RTTI и атрибуты
- Использование атрибутов и наследников TCustomAttribute
- Углубленное исследование TRTTIType
- Углубленное исследование наследников TRttiMember (часть I), свойства и поля
- Углубленное исследование наследников TRttiMember (часть II) Методы
- Почему я вызываю TRttiContext.Create() и TRttiContext.Free()
- Введение в TValue
Описание библиотек JCL и JVCL:
Общее описание библиотеки Jedi Code Library. JCL 3.35.
Серия постов, описывающих некоторые компоненты из библиотеки Jedi Visual Control Library.
Серия публикаций от Александра Алексеева.
Обработка ошибок в Delphi-программах:
- Обработка ошибок – фундаментальное исследование по обработке ошибок в Delphi. Сравниваются разные подходы (коды ошибок и исключения), рассматривается механизм возникновения и обработки исключений, средства диагностики исключений (Jcl, FastMM, EurekaLog, Windows Error Reporting), даются советы о том, как правильно обрабатывать ошибки. Подробно описывается работа с отладчиком и многое другое. Из-за огромного размера статьи доступен вариант в PDF.
- Access Violation в деталях - подробный разбор самой частой ошибки в Delphi-программах. Что это такое, откуда берётся, возможные причины, как диагностировать, как исправлять.
- Ищем утечки памяти – статья о том, как искать утечки памяти в Delphi программах с помощью EurekaLog, FastMM, MemProof/AQTime.
- Настройки проектов в Delphi с точки зрения поиска ошибок – как настроить проект, чтобы получить максимум информации в отчёте об ошибке.
- Как читать Log-файлы отчётов об ошибках EurekaLog, FastMM, JCL – как проанализировать стек вызовов и найти место возникновения ошибки. Типичные ошибки новичков.
- EurekaLog с точки зрения ShareWare-разработчика – обзор EurekaLog с позиции разработчика ShareWare-программ (вопросы защиты кода).
- Anti-freeze в EurekaLog – отслеживание зависания программы с помощью EurekaLog.
Менеджеры памяти в программах – описание устройства менеджера памяти в Delphi. Зачем нужен, как используется, межмодульное взаимодействие.
Создание приложений для Windows Vista в Delphi (до 2007)
- часть 1 - перевод Creating Windows Vista Ready Applications with Delphi. Автор: Nathanial Woolls.
- часть 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:
- DllMain - страшилка на ночь - перевод DllMain: a horror story. Автор: Олег Львович
- DllMain и жизнь до родов - перевод DllMain and life before birth. Автор: Олег Львович.
- Несколько причин, чтобы не делать ничего страшного в своей DllMain - перевод Some reasons not to do anything scary in your DllMain. Автор: Реймонд Чен
- Ещё причины, почему не надо делать ничего страшного в DllMain: случайная блокировка - перевод статьи Реймонда Чена Another reason not to do anything scary in your DllMain: Inadvertent deadlock с примерами на Delphi.
Перевод серии статей Реймонда Чена – “Как управлять IContextMenu” с примерами на Delphi.
- Как управлять IContextMenu, часть 1 - вступительное слово
- Как управлять IContextMenu, часть 2 – показ контекстного меню
- Как управлять IContextMenu, часть 3 - место вызова
- Как управлять IContextMenu, часть 4 - контекст клавиш
- Как управлять IContextMenu, часть 5 - обработка сообщений от меню
- Как управлять IContextMenu, часть 6 - отображение подсказок меню
- Как управлять IContextMenu, часть 7 - вызов пункта меню по-умолчанию
- Как управлять IContextMenu, часть 8 - оптимизируем вызов команды по-умолчанию
- Как управлять IContextMenu, часть 9 - добавление своих команд
- Как управлять IContextMenu, часть 10 - компоновка расширителей меню - основы
- Как управлять IContextMenu, часть 11 - компоновка расширителей меню - компоновка
Перевод серии статей Реймонда Чена: Dragging a shell object, part 1: Getting the IDataObject с примерами на Delphi.
- Перетаскивание объекта оболочки, часть 1: получение IDataObject
- Перетаскивание объекта оболочки, часть 2: добавляем перемещение
- Перетаскивание объекта оболочки, часть 3: определение "оптимизированного" перемещения
- Перетаскивание объекта оболочки, часть 4: добавляем красивую иконку
- Перетаскивание объекта оболочки, часть 5: заставляем кого-нибудь делать за нас работу
Серия заметок от Александра Алексеева о создании системы плагинов на Delphi:
- Часть 1. Варианты реализации (DLL, COM, пакеты, использование интерфейсов)
- Часть 2. Создание точки входа.
- Часть 3. Реализация плагина в пакете, в виде DLL.
- Часть 4. Объяснение работы пакета как DLL.
- Часть 5. Загрузка пакетов в виде DLL.
- Часть 6. Интерфейс IInit.
- Часть 7. Обработка ошибок в плагинах.
- Часть 8. Объявление дополнительных интерфейсов и передача строк.
- Часть 9. Совместимость с другими языками. Обмен данными переменного размера.
- Часть 10. Пример реализации.
- Часть 11. Исходники.
Неожиданно и приятно было увидедь упоминание своей статьи "превращаем главное невидимое окно..." у вас. Правда радость омрачается тем, что до ума этот код так и небыл доведён. То один то другой недочёт где-нибудь да вылезет. И всё это спотыкание из-за того, что как-то не расчитана виндус на работу многооконной программы.
ОтветитьУдалитьНапример, надо что бы помимо главного окна на экране были ещё два-три окна. Задав им владельца при создании, они будут всегда его перекрывать, т.е. выше по z-order, не задав владельца, все они будут иметь свои кнопки в taskbar'e.
Если сделать невидимое окно и делать его владельцем для всех "главных" окон программы(как и сделано в delphi), то в висте получается такая ерунда - в preview видна пустота.
Если сделать невидимое окно и делать его владельцем для всех "главных" окон программы, но кнопку в taskbar'е вывести от одного из окон, то почти невозможно становится управлять сворачиванием/разворачиванием программы. Окно(владелец кнопки в taskbar'е) начинает всё время вылезать на передний план.
Для однооконных программ сейчашний вариант подойдёт, для многоокооных - нет(главное окно вылезает на передний план).
В виндус 7 кажется осознали свою ошибку и preview наконец научились показывать и для свёрнутых программ, так что в семёрке это уже не актуально. Почему столько лет немогли исправить в висте непонятно.
Текст в самой статье уже давно не соответствует версии в прилагаемом архиве. Текст писался для первого-пробного-дискуссионного варианта. К сожалению "королевство" не очень приспособлено к ведению "личных веток". Мало того что я закалебал модераторов обновлениями архива, так я бы еще и достал бы их обновлением статьи...
Извините, если сумбурно написал - температура 38...
Отличная подборка материалов!
ОтветитьУдалитьПока мы тут отдыхали, Вы, Алексей потрудились на славу!
Классная подборка! Спасибо.
ОтветитьУдалитьДмитрий, мне самому очень приятно что Вы заметили эту ссылку. :)
ОтветитьУдалитьА по теме вопроса - я сам привык мирится с подобными недостатками Delphi, и стараюсь не трогать те механизмы, которые выходят за рамки "форм и компонентов", но с удовольствием читаю статьи вроде вашей, так как они позволяют лучше понять внутреннюю оконную кухню Винды.
Спасибо, Александр! =)
ОтветитьУдалить