Вопрос о совместимости компонентов при переходе на 64-битные приложения в среде разработки Delphi актуален для многих разработчиков. Особенно это касается использования функций, работающих с объектами COM, таких как CreateOleObject. В статье мы рассмотрим, как решить проблему с отсутствием модуля Vcl.OleAuto в 64-битных программах на примере Delphi XE7.
Проблема
При попытке использовать функцию CreateOleObject в 64-битной программе на Delphi XE7, разработчики сталкиваются с ошибкой:
[dcc64 Fatal Error] Unit1.pas(33): F1026 File not found: 'Vcl.OleAuto.dcu'
Это происходит потому, что модуль Vcl.OleAuto, необходимый для работы с COM-объектами, отсутствует в 64-битной версии библиотеки. В то время как в 32-битных программах всё работает корректно:
Согласно подтверждённому ответу, исходный код для Vcl.OleAuto всё ещё поставляется в комплекте, но в 64-битной директории lib отсутствует файл Vcl.OleAuto.dcu. Вместо этого рекомендуется использовать модули System.Win.ComObj и/или System.Win.ComServ. Важно отметить, что исходный код Vcl.OleAuto отмечен как устаревший, и в нём указаны альтернативные модули для использования.
Изучение исходного кода Vcl.OleAuto показывает, что в нём содержится некоторый 32-битный ассемблерный код, который не был перенесён. Предполагается, что компания Embarcadero решила не переносить этот код на 64-битную платформу, поскольку модуль уже считается устаревшим.
Альтернативные подходы
Рассмотрим пример использования System.Win.ComObj для создания COM-объекта:
Использование этого модуля позволяет работать с COM-объектами в 64-битных приложениях, не прибегая к использованию устаревшего Vcl.OleAuto.
Заключение
Переход на 64-битные приложения в среде Delphi требует внимания к деталям и понимания изменений в структуре модулей. Использование новых модулей, таких как System.Win.ComObj, является ключом к успешной миграции и поддержанию совместимости с COM-объектами в современных приложениях.
Эта статья предоставляет разработчикам, сталкивающимся с проблемой отсутствия Vcl.OleAuto в 64-битных программах, пошаговое руководство по решению этой проблемы и альтернативные подходы для работы с COM-объектами.
Вопрос связан с решением проблемы совместимости при использовании функции `CreateOleObject` в 64-битных приложениях Delphi XE7, где отсутствует модуль `Vcl.OleAuto`, и предложены альтернативные способы работы с COM-объектами.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS