|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.06.2008, 18:00 | #1 |
Пользователь
Регистрация: 08.06.2008
Сообщений: 74
|
Проблема преобразование jpg в bmp через dll
Здравствуйте всем!
Пытаюсь написать dll которая будет конвертировать jpg в bmp, в delphi эта функция прекрасно работает, а вот экспортировать из dll не получается. Мне нужно чтобы из программы кликнув по кнопке, в dll передавался путь к файлу, а затем там этот jpg файл конвертировался в bmp и функция возвращала бы bitmap который я потом бы мог скопировать в Timage. Вот ниже привожу полностью код dll и самой программы, но увы почему-то не работает Помогите пожалуйста заставить всё это работать, я уже всю голову сломал. Да кстати SaveToClipboardFormat,LoadFromClipb oardFormat мне не подходят. Dот код dll Код:
Код:
|
23.06.2008, 19:39 | #2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
И Вам здравствуйте.
Модули VCL, подключаемые к dll имеют свои разделы инициализации, которые выполняются когда dll подгружается к приложению. По сути мы получаем два отдельных набора классов - для приложения и для DLL. TBitMap.assign проверяет соответствие класса (as) и объект TJPEGIMage(созданный в dll) отвергается как неопознанный. Оба объекта должны быть созданы и использоваться или в dll или в приложении. Лучшее, что Вы можете сделать - вернуть Handle of TBitMap: Код:
Код:
Проще вообще отказаться от такого подхода и поместить эту функцию в приложение. ------------------------------- Можно еще попробовать передать Canvas.Handle в dll и отрисовать полученный BitMap на канве. ------------------------------- И не забывайте uses ShareMem. |
24.06.2008, 02:23 | #3 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Можно как var параметры передать объект приемник и источник, а что вернет функция уже не важно, можно и процедуру сделать.
з.ы. Тут проблема не в конвертации а в передаче параметров. Так, как я написал, работает 100%. А вот дельфи строки в DLL передавать не рекомендуется, PChar надо. Приблизительно так: функция принимает из программы путь к файлу и ссылку на JpegImage, в функции создается локальный битмап, грузиться из файла, копируется (Assign) в тот JpegImage, битмап освобождается. Вернуть функция может результат успешно или нет завершилась.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 24.06.2008 в 02:38. |
24.06.2008, 09:05 | #4 | ||
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
Цитата:
Код:
Я думаю из-за несоответствия в B.assign при проверке класса (что-то вроде Source is TJPEGImage) Вот если оба класса созданы в dll или в exe, то assign работает нормально. Например, так: Код:
Например, так: Код:
|
||
24.06.2008, 15:47 | #5 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Цитата:
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
|
24.06.2008, 18:24 | #6 |
Пользователь
Регистрация: 08.06.2008
Сообщений: 74
|
Спасибо всем за ответы, теперь примерно всё понял.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Преобразование... | prizrak1390 | Общие вопросы Delphi | 2 | 02.04.2008 11:24 |
Проблема соединения с MySQL через ODBC | yakovlev87 | БД в Delphi | 1 | 27.08.2007 09:51 |
Преобразование типов | Pronik | Общие вопросы Delphi | 2 | 12.06.2007 12:23 |