Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2013, 08:20   #1
Crystallon
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 273
По умолчанию Работа с Bitmap в DLL

Доброго времени суток!
Переношу код из оконной программы в DLL и столкнулся с весьма неожиданной проблемой, в DLL TBitmap ведет себя не так как в оконной программе.
А конкретно:
У TBitmap не возможно получить Handle, т.е. на строчку Bitmap.Handle компилятор выдает "Undeclared identifier: 'Handle'", даже при создании битмапа( bitmap := TBitmap.Create; ) компилятор ругается "Object or class type required", при попыпке загрузить в него картинку( bitmap.LoadFromFile('Texture.bmp'); ) выдает "Undeclared identifier: 'LoadFromFile'" итд.
Подскажите пожалуйста в чем причина этого и можно ли как-то заставить битмап работать адекватно?
Заранее спасибо!
Crystallon вне форума Ответить с цитированием
Старый 06.01.2013, 09:20   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
У TBitmap не возможно получить Handle
handle, это дескриптор окна. DLL окна не имеет, поэтому и дескриптора у неё нет.
Цитата:
даже при создании битмапа( bitmap := TBitmap.Create; )
Как создан битмап? Нужно создавать динамический объект.
Цитата:
выдает "Undeclared identifier: 'LoadFromFile'"
Поскольку битмап небыл создан, он пишет - отсутствующий идентификатор.
И нужно учитывать, что из DLL-ки можно что-то считывать. Записать в неё невозможно по причине того, что она создаётся при компиляции.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 06.01.2013 в 09:23.
Smitt&Wesson вне форума Ответить с цитированием
Старый 06.01.2013, 10:03   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не помню в каком модуле обьявлен TBitmap, помоему Graphics, он есть в uses?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.01.2013, 12:30   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Так бывает , если модуль Windows в списке uses стоит _после_ Graphics, переставьте их в обратном порядке и всё будет норм.
А длл тут ни при чем и в обычном проекте можно такой прикол сделать.
Теория для почитать http://www.transl-gunsmoker.ru/2010/09/uses.html
phomm вне форума Ответить с цитированием
Старый 07.01.2013, 01:46   #5
Crystallon
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 273
По умолчанию

Всем спасибо, проблему решил объявляя битмап так: bitmap:Graphics.TBitmap, полагаю способ описанный phomm тоже сработал бы.
Crystallon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с bitmap (C#) miss_ka Помощь студентам 0 10.09.2012 19:52
Работа с Bitmap MeTeOpA Общие вопросы C/C++ 2 21.05.2011 12:01
из-за чего появляется полоса (на скрине) при вставке BitMap в TImage? - Проблема с Bitmap Grey@2009 Мультимедиа в Delphi 2 02.01.2010 20:23
Загрузка BitMap из DLL Македонский Мультимедиа в Delphi 2 02.06.2009 17:28
работа с Bitmap AlexandrL Мультимедиа в Delphi 2 16.04.2007 01:01