![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте!
Есть программа стороннего разработчика, которая позволяет создавать для нее плагины в виде 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;//в приложении Код:
rec_picture = packed record name : array[1.254] of char; typePic : integer; pData : ^BYTE; //указатель на память lenData : Cardinal; //размер массива памяти end; |
#2
|
|||
|
|||
![]() Создаешь MemoryStream, сохраняешь туда картинку, потом берешь указатель на соотв. память и тыкаешь его в pData, а размер - в lenData.
При чтении - наоборот Только учти, что память придется освобождать отдельной командой. А еще лучше, передавать копию памяти. Т.е. создаем поток, сохраняем, потом по размеру выделяем новый кусок памяти, копируем туда данный и убиваем поток. |