Достать картинку из другой dll

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Достать картинку из другой dll

Сообщение kreator »

C10. Мульти-dll проект. В одной dll лежат картинки (прилинкованы). Могу ими воспользоваться из другой dll?
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7323
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Достать картинку из другой dll

Сообщение Игорь Столяров »

Тут надо рыть загрузку ресурсов DLL через WinAPI ....

1. Пример для DELPHI: http://pro.dtn.ru/delphi-net/dll-4.html
2. Где-то на CLARIONLIFE был пример загрузки TTF шрифтов из DLL - в принципе, то же самое ...
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Достать картинку из другой dll

Сообщение kreator »

Я думал что-то полегче, типа через тильду. DLL-ка то моя.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7323
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Достать картинку из другой dll

Сообщение Игорь Столяров »

kreator писал(а): 22 Август 2017, 14:44DLL-ка то моя.
А так это всё упрощает .... ;)

1. Добавляем в DLL метод GetMyDLLPicture(PictureName),NameFilePicture
Добавляем к PictureName тильду и вызываем вложенную в DLL картинку в IMAGE, оттуда сохраняем в файл TMP папки.
Возвращаем имя файла в TMP папке.

2. В программе ?Image{Prop:Text} = GetMyDLLPicture('COROVA.JPG')

3. Всё .... :)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Достать картинку из другой dll

Сообщение kreator »

Похоже, кушает банально "?Image{Prop:Text} ='~COROVA.JPG'", даже если 'COROVA.JPG' в другой dll. Сработало, но мозг не принимает такой простоты.
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Достать картинку из другой dll

Сообщение Admin »

kreator писал(а): 22 Август 2017, 15:30Похоже, кушает банально "?Image{Prop:Text} ='~COROVA.JPG'"
"Похоже" в данном случае картинка просто с диска грузится. Чуда не будет :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Достать картинку из другой dll

Сообщение kreator »

Admin писал(а): 23 Август 2017, 2:01 "Похоже" в данном случае картинка просто с диска грузится. Чуда не будет :)
Знаю про эту фичу (если нет прилинкованной, то берётся с диска). Явно удалил картинку с диска после линковки. Всё работает. Подозреваю, нужно ещё потестить. Коллега выйдет через полторы недели из отпуска (его dll), потестим повнимательней.
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Достать картинку из другой dll

Сообщение Admin »

kreator писал(а): 23 Август 2017, 10:28Явно удалил картинку с диска после линковки
Памяти не верю. Cделал тестовый пример. Не работало.
Ждем ваш пример :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7323
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Достать картинку из другой dll

Сообщение Игорь Столяров »

kreator писал(а): 23 Август 2017, 10:28Явно удалил картинку с диска после линковки
Проверил. И у меня не работает.
Да по сути и не может работать - в каждом модуле (DLL / EXE) свои ресурсы ...
Ведь можно залинковать 2 разные картинки под одним именем в разные DLL и что тогда покажет вызов с тильдой из EXE ?!
Проверьте, точно нет картинки в ресурсах EXE ? Она могла неявно прилинковаться в исполняемый файл ....
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Достать картинку из другой dll

Сообщение kreator »

Придётся сделать тестовое приложение. У себя ещё раз проверил - работает даже после перезагрузки компа. Неявно прилинковаться? Не понятно пока как это возможно. В .cwproj этой dll-ки картинки нет.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7323
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Достать картинку из другой dll

Сообщение Игорь Столяров »

kreator писал(а): 23 Август 2017, 12:12В .cwproj этой dll-ки картинки нет.
Вы же программер ! :) Внутри EXE / DLL файла, в разделе RSRC/IMAGE - все картинки ...
Самый простой способ долезть туда - например в FAR нажать CTRL+PgDn на файле ....
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Достать картинку из другой dll

Сообщение kreator »

Наверно, я не прав. На тесте разобрался. Есть две процедуры. Находятся в разных dll (Первая процедура в первой dll, вторая соответственно во второй). Обе работают с одной и той же картинкой. Картинка прилинкована, допустим, ко второй dll. Первая процедура вызывает вторую процедуру и после этого первая процедура видит нужную картинку. Всё это работает только в одном треде. Конечно, такой режим работы не устраивает.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4553
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Достать картинку из другой dll

Сообщение finsoftrz »

Если не ошибаюсь, Мялин когда-то пример выкладывал, как делать ресурсную dll с пиктограммами. Мне тогда по определенным причинам не подошло, а сейчас искать в архивах лениво...
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Достать картинку из другой dll

Сообщение Дед Пахом »

finsoftrz писал(а): 23 Август 2017, 16:37Если не ошибаюсь, Мялин когда-то пример выкладывал, как делать ресурсную dll с пиктограммами
И я помню такое. Нужен Resource compiler, чтобы прилинковать dll как ресурс. Но это не тот случай, по-видимому.
С уважением, ДП
Ответить