![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Создание единого кодового пространства для работы с CSIDL и KNOWFOLDERID в Delphi XE4Delphi , ОС и Железо , WindowsВопрос, поднятый пользователем, заключается в необходимости создания единой кодовой базы для работы с идентификаторами папок CSIDL и KNOWFOLDERID в среде разработки Delphi XE4. Это требуется для обеспечения совместимости с различными версиями операционной системы Windows, начиная с Windows XP. Описание проблемыДля решения этой задачи можно было бы использовать условную компиляцию, но это привело бы к необходимости создания разных версий исполняемых файлов для разных версий Windows, что значительно усложняет процесс установки. Альтернативный ответВместо условной компиляции рекомендуется использовать ветвление в runtime. Это позволяет коду выбирать соответствующую функциональность в зависимости от версии операционной системы, на которой он выполняется. Пример такого подхода в коде на Object Pascal (Delphi):
Важно, чтобы ветвление было выполнено на низком уровне и скрыто от высокоуровневого кода. Высокоуровневый код должен запрашивать локацию папки, не заботясь о деталях ветвления. Для работы с системными API, которые могут отсутствовать на старых платформах, следует использовать отложенную загрузку (delay loading), что является хорошей практикой в современных версиях Delphi. Подтвержденный ответИспользование условной компиляции для решения данной задачи не является предпочтительным. Вместо этого рекомендуется применять ветвление в runtime, что позволяет избежать необходимости создания различных версий исполняемых файлов. Использование новых функций для проверки версии WindowsДля проверки версии Windows рекомендуется использовать новые вспомогательные функции, которые включены в модули Windows, поставляемые с Delphi. Если ваша версия Delphi не включает эти функции, вы можете использовать следующие:
Эти функции позволяют проверить, соответствует ли версия установленной операционной системы заданным критериям. Заключениевозможно с использованием runtime ветвления. Это позволяет коду быть гибким и совместимым с различными версиями Windows, не усложняя процесс установки и не создавая необходимость в условной компиляции различных версий программы. Создание универсального кодового решения для работы с CSIDL и KNOWFOLDERID в Delphi XE4, обеспечивающего совместимость с разными версиями Windows, без использования условной компиляции. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |