Распаковка изображения из OleVariant в TBitmap, для передачи по COM-DCOM



Автор: Бармалей
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Распаковка изображения из OleVariant в TBitmap, для передачи по COM/DCOM
Зависимости: Classes
Автор:       Бармалей, [email protected]
Copyright:   (с) Муханов Игорь Станиславович, г.Москва, 2002 г.
Дата:        29 апреля 2002 г.
***************************************************** }
procedure LoadBitmapFromVariant(Bitmap: TBitmap; Buffer: OleVariant);
// Загрузка изображения в TBitmap из OleVariant
var
Stream: TMemoryStream;
PBuffer: pointer;
begin
if not VarIsArray(Buffer) then
Exit;
Stream := TMemoryStream.Create;
PBuffer := VarArrayLock(Buffer);
try
Stream.Write(PBuffer^, (VarArrayHighBound(Buffer, 1) -
VarArrayLowBound(Buffer, 1) + 1));
finally
VarArrayUnlock(Buffer);
end;
Stream.Position := 0;
Bitmap.LoadFromStream(Stream);
Stream.Free;
end;

Далее: Реализация событий COM+ в среде Delphi »»