Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.12.2009, 12:25
PG81 PG81 вне форума
Прохожий
 
Регистрация: 15.10.2009
Сообщения: 31
Репутация: 10
По умолчанию Как передать какртинку и получить картику из dll?(она не в ресурсах)

Здравствуйте!
Есть программа стороннего разработчика, которая позволяет создавать для нее плагины в виде dll.Обмен данными между приложением и dll осуществляется через одну процедуру в dll и одну процедуру в приложении
Код:
function ReceiveMessage(a1:PUINT; a2:UINT; a3:WPARAM; a4:LPARAM):LPARAM; cdecl;//в dll
и
SendMessage = function(a1:Pointer; a2:Cardinal; a3:integer; a4:integer): integer; cdecl;//в приложении
в ReceiveMessage приходит команда с кодом в a2 и параметром a3. В а3 может быть следующая структура для получения картинки, такую же структуру я должен заполнить чтобы передать приложению.Как туда передать картику и получить картинку (может быть BMP, PNG, JPG указывается в поле typePic)?
Код:
  rec_picture = packed record
  	name     : array[1.254] of char;
  	typePic  : integer;
  	pData    : ^BYTE;    //указатель на память
  	lenData  : Cardinal; //размер массива памяти
  end;
Ответить с цитированием
  #2  
Старый 23.12.2009, 03:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Создаешь MemoryStream, сохраняешь туда картинку, потом берешь указатель на соотв. память и тыкаешь его в pData, а размер - в lenData.
При чтении - наоборот

Только учти, что память придется освобождать отдельной командой. А еще лучше, передавать копию памяти. Т.е. создаем поток, сохраняем, потом по размеру выделяем новый кусок памяти, копируем туда данный и убиваем поток.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025