![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Cinemaizer[Олег] |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
Подскажите плиз как правильно задавать параметры (в моем случае) при неявной загрузке дельфийской dll, поскольку ошибка "Access violation at address 003746DB in module 'gensmart32.dll'. Read of address 00000008" как бы намекает именно на проблемы с этим делом вроде.
Суть задачи в следующем: По нажатию на DBimage пытаюсь загрузить картинку, которая должна быть уменьшена и вставлена в базу.
Код dll-ки такой:
В случае, если процедуру MakeThumbNail тупо вставить в модуль(где вышеупомянутая кнопка-dbimage) и отказаться от использования dll, то все работает отлично, а так - спотыкается именно на строке MakeThumbNail(t, d, 161) при нажатии :( Это сообщение отредактировал(а) Cinemaizer[Олег] - 30.8.2011, 17:55 |
||||
|
|||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
Попробывать отлаживать проект dll а не проект с ее вызовом, может будет понятнее в чем ошибка.
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
| RomanEEP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 5 Всего: 8 |
в DLL библиотеку нельзя передавать классы.
procedure(var src, dest: TBitmap; const ThumbSize: Word); stdcall; - недопустимо |
|||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
При создании dll на Delphi сверху написано такое:
Не в этом проблема? Я у себя передаю, почему-то всё работает. ;) Главное, чтобы в dll и основной программе классы одинаковых версий использовались. Это сообщение отредактировал(а) rodnover - 1.9.2011, 11:01 |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
Короче действительно нельзя, правильное решение тут это интерфейсы или bpl Это сообщение отредактировал(а) bems - 2.9.2011, 03:00 -------------------- Обижено школьников: 8 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Не по теме. А зачем такие сложности для создания эскизов (thumbnails)?
|
|||
|
||||
| Cinemaizer[Олег] |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
Эмм... А затем чтоб не грузить "очень бааальшие" картинки в базе за ненадобностью. Мне в итоге нужно лишь мелкая картинка для печати на бланке. Это сообщение отредактировал(а) Cinemaizer[Олег] - 2.9.2011, 12:57 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Вопрос ты не понял мой, юный падаван.
|
|||
|
||||
| Cinemaizer[Олег] |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
Корректнее вопроса своего формулировку формулируйте о, йода-мастер... В принципе, процесс ужатия больших картинок можно упростить, просто на глаза код попался этот... не удержался от применения ) Это сообщение отредактировал(а) Cinemaizer[Олег] - 2.9.2011, 13:14 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Внимательно прочитай ещё раз
Добавлено через 1 минуту и 20 секунд Ладно, дам тебе подсказку. Вот вопрос: А зачет ты делаешь эскизы? Можешь теперь сравнить. Будем надеяться, что поймёшь ты мой первый вопрос, юный падаван Добавлено через 2 минуты и 7 секунд Мне кажется, что этот код проще:
Вопрос лишь в понимании кода и в производительности. |
|||
|
||||
| Cinemaizer[Олег] |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
О Уважаемый, йода-мастер!.. Я уже говорил - эскизы делаю именно затем, чтобы не хранить в БД большие картинки (бо - незачем занимать много места), мне они (картинки) нужны в мини-варианте. Эскиз который имеется в самом джипеге (а как быть не с джипегами тогда? http://otvet.mail.ru/question/37220832/ но вот почему то пошел вышупомянутым путем Добавлено @ 13:43 Уф, незаметил как Акелла добавил код, безусловно это будет и проще и лучше - так и сделаю. Спасибо! Это сообщение отредактировал(а) Cinemaizer[Олег] - 2.9.2011, 13:52 |
||||
|
|||||
| Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Я спрашивал не зачем тебе нужны эскизы, а зачем такой сложный код, если есть проще? Добавлено @ 13:58
а вот что тебе советеют разработчики Дельфи Добавлено через 3 минуты и 14 секунд
попытайся перевести, а потом сравни свои секции USES в DPR модулях проекта и библиотеки. |
||||||
|
|||||||
| Cinemaizer[Олег] |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
||||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Ну и...
|
|||
|
||||
| Cinemaizer[Олег] |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
||||
|
||||
| sCreator |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 20.8.2009 Где: Московская област ь Репутация: 2 Всего: 5 |
В exe
в dll
Два разных объявления. И работает? |
||||
|
|||||
| Cinemaizer[Олег] |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
||||
|
||||
| sCreator |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 20.8.2009 Где: Московская област ь Репутация: 2 Всего: 5 |
Тогда понятно. Просто не прозвучало, а это тоже причина AV.
Кстати вместо таскания BORLNDMM.DLL можно посмотреть в сторону FastMM4. Бесплатный альтернативный менеджер памяти для Delphi, обеспечивает в том числе и взаимодействие с Dll. и компилится в сам проект. http://timokhov.blogspot.com/2007/03/delph...iii-fastmm.html |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
ребят, сейчас 2011й год.
фастмм давно дефолтный менеджер в дельфи -------------------- Обижено школьников: 8 |
|||
|
||||
| Cinemaizer[Олег] |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
Я в семерке доселе еще работаю |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
тогда ставь. Просто подключить его первым юнитом недостаточно, нужно включить шаринг.
И прочитай моё сообщение выше, там написано какие еще проблемы с передачей классов в длл, кроме менеджера памяти -------------------- Обижено школьников: 8 |
|||
|
||||
| Cinemaizer[Олег] |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
ОК. Спасибо! |
|||
|
||||
| Cinemaizer[Олег] |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
Кстати, не совсем корректен код Акеллы. Малость переделал и упростил. В итоге, если исходник больше чем эскиз, то уменьшаем пропорционально, если же меньше, то увеличиваем (быть может не всем такой метод нужен, но мне именно такой необходим был):
2 Акелла: Чтобы четко вписать в размер эскиза с правильными пропорциями, сравнение соотношения корректнее делать не по первичным размерам, а по преобразованным:
|
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Добавлено через 2 минуты и 43 секунды Cinemaizer[Олег], чем больше условий и переходов, тем может дольше будет выполнятся код. А эскизы нужно создавать и показывать "на лету", без задержек. |
|||
|
||||
| Cinemaizer[Олег] |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.4.2008 Где: Москва Репутация: нет Всего: 0 |
ну вот надо мне так чтобы исходник (с правильными пропорциями ессно) четко вписался в размеры эскиза. Ужель не встречался такой подход в каких-нибудь приложениях? Я встречал. А в чем сложности то? Код у меня не сложнее твоего, разве что расчеты bmpDest.Width и bmpDest.Height всегда выполняются. И к слову, они в любом случае должны быть заданы явно, в твоем коде исходники меньшие по размеру чем эскиз, вообще не загружены будут. Плюс, еще вроде здесь ошибка:
По идее, надо бы так:
|
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Если увеличивать, то нужно реализовать и сглаживание, а на это нужно время и ресурсы, особенно если качественное сглаживание.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |