Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Ошибка EResNotFound в Delphi XE7: Правильное связывание ресурсов с компонентом FMX

Delphi , Файловая система , Ресурсы

В процессе разработки на Delphi, особенно при работе с компонентами FMX, разработчики могут столкнуться с ошибкой EResNotFound. Это происходит, когда приложение пытается прочитать ресурс, который не был найден в модуле. В данном случае, проблема связана с использованием ресурсов в компоненте FMX в среде разработки Delphi XE7.

Проблема и Контекст

Разработчик добавил PNG-файлы в FMX-bpl (FmxComponents.bpl) через раздел "Resources and Images" в IDE XE7, что привело к созданию файла FmxComponents.dres, но не FmxComponents.res. При попытке обращения к ресурсу с помощью следующего кода:

TResourceStream.Create(FindClassHInstance(TPmFmxTitelbar), 'ImgOptions', RT_RCDATA);

возникала ошибка EResNotFound, поскольку ресурс ImgOptions не был найден. Попытки решения проблемы, в том числе использование информации из поста на Stack Overflow, не привели к успеху.

Альтернативный ответ

Анализируя ситуацию, можно предположить, что проблема может быть связана с неправильным указанием модуля, в котором должен быть найден ресурс. Первый параметр конструктора TResourceStream - это экземпляр модуля, в котором осуществляется поиск ресурсов. Если ресурсы действительно были правильно связаны, то возможно, что передавался неверный экземпляр модуля.

Также возможно, что ошибка связана с неправильным указанием типа или имени ресурса в процессе связывания. Для проверки следует использовать инструменты просмотра или редактирования ресурсов.

Подтвержденный ответ

Разработчик решил проблему, добавив директиву { $R FmxComponents.dres } в свой компонент. Он понял, что добавление этой директивы в файл пакета (dpk-file) недостаточно для связывания ресурсов с компонентом, и ресурсы должны быть явно указаны в коде.

Решение

Для корректного использования ресурсов в компоненте FMX в Delphi XE7, необходимо:

  1. Убедиться, что ресурсы добавлены в соответствующий файл .dres через раздел "Resources and Images" в IDE.
  2. В коде компонента добавить директиву включения ресурсов { $R Путь к файлу.dres }, где Путь к файлу.dres - это путь к файлу, содержащему ресурсы.
  3. При обращении к ресурсу использовать правильный экземпляр модуля, в котором ресурс должен быть найден.
  4. Проверить корректность типа и имени ресурса с помощью инструментов просмотра или редактирования ресурсов.

Пример кода

{$R FmxComponents.dres} // Пример директивы включения ресурсов
...
TResourceStream.Create(HInstance(TPmFmxTitelbar), 'ImgOptions', RT_RCDATA);

Следуя этим шагам, разработчики смогут избежать ошибки EResNotFound и успешно использовать ресурсы в своих проектах на Delphi XE7.

Создано по материалам из источника по ссылке.

Вопрос связан с решением проблемы ошибки EResNotFound в Delphi XE7 при работе с ресурсами компонента FMX.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Ресурсы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:32:18/0.0036079883575439/0