![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| X-Vlad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 570 Регистрация: 10.4.2002 Где: Украина, Львов Репутация: 1 Всего: 5 |
Привет всем.
Пишу длл. в ней лежат компоненты которые работают с веб камерой... с программы я ее запускаю появляется окно с длл там нажимаю кнопку делается снимок - мне его надо передать обратно в программу. Как это сделать? пробовал что типа: функция в длл
Из длл вроди нельзя передавать обьекты.. какой есть выход? может стоит юзать МемориСтрим? Может кто нибуть стыкался с подобным? Зарание благодарен. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Если юзается общий менеджер памяти, то можно заюзать обычный array of byte, можно вернуть интерфейс IStream, который получается через TStreamAdapter, а в проге работать уже с IStream.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
смотри мой пост:
предлагаю передать картинку через строку# там я рекомендовал передавать картинку строкой при помощи преобразований: TBitmap -> TStringStream -> string string -> TStringStream -> TBitmap чувствую, где-то есть подводный камень, но должно работать ))) Это сообщение отредактировал(а) pseud - 9.4.2008, 11:58 -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
pseud, всетаки AnsiString не стоит передавать в/из DLL.
стоит прислушаться к совету Alexeis. самый разумный вариант. -------------------- There are always someone smarter than you... |
|||
|
||||
| X-Vlad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 570 Регистрация: 10.4.2002 Где: Украина, Львов Репутация: 1 Всего: 5 |
тоесть в моем варианте должно быть
? Это сообщение отредактировал(а) X-Vlad - 9.4.2008, 12:44 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
почти. только "поверх" aStream (кстати нелогичное название локальной переменной) надо создать обертку TStreamAdapter
-------------------- There are always someone smarter than you... |
|||
|
||||
| X-Vlad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 570 Регистрация: 10.4.2002 Где: Украина, Львов Репутация: 1 Всего: 5 |
можешь поподробней? |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Ничего сложного
Больше ничего не нужно. Переменную strm можно передавать куда угодно, но главное не забыть после окончания работы занулить ее присвоив nil, иначе созданный объект не уничтожиться. Если TStreamAdapter назначить владельцем aStream, то он в добавок еще aStream уничтожит по окончанию работы.
На той стороне можно сделать такой же адаптер для TMemoryStream или просто вызывать методы интерфейса IStream для передачи данных. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| X-Vlad |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 570 Регистрация: 10.4.2002 Где: Украина, Львов Репутация: 1 Всего: 5 |
программа
DLL
так? или я чтото непонял? |
||||
|
|||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
X-Vlad,
1. раз строки передаешь используешь ли общий менеджер памяти? 2. Функция в dll также должна быть stdcall. Добавлено через 39 секунд п.с. оттально не смотрел... -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| X-Vlad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 570 Регистрация: 10.4.2002 Где: Украина, Львов Репутация: 1 Всего: 5 |
что за фишка такая.. добавляю в uses модуль Types, все равно матерится что незнает что такое IStream?
|
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
X-Vlad, не не так.
1я строчка бесполезная, так как указатель затирается указателем полученным от GetImageFromWebCam.
тоже не проканнает, так как Bitmap.LoadFromStream не умеет тянуть из IStream. Так что одно из 2х, либо создавать временный TMemoryStream и перекачивать в него данные из aStream, или написать своего потомка от TStream который в своих функциях будет вызывать методы IStream. Т.е. в конструкторе он получит указатель на внешний IStream. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| X-Vlad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 570 Регистрация: 10.4.2002 Где: Украина, Львов Репутация: 1 Всего: 5 |
Alexeis,
что это? |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
X-Vlad, а делфя у тя какая?
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
uses AciveX;
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "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. |