var
Stream: TMemoryStream;
HoldArray: array of Byte;
P: Pointer;
begin
Stream := TMemoryStream.Create;
//Reference to a blob field
Query1COMPANY_DATA.SaveToStream(Stream);
SetLength(HoldArray,Stream.size);
P := @HoldArray;
//If position not set to zero, no bytes read
Stream.Position := 0;
Stream.Read(TByteArray(P^),Length(TByteArray(P^)));
//Pass to JNI Wrapper, this part is fine
Company.setCompanyBlob(HoldArray);
end;
But of course this baggs badly, any hints as to why?
Pardon my coding style, I am a Java guy.
Thanks in advance
Mark.
(snip)
Here's the correct way.
procedure X;
var
Stream: TStream;
HoldArray: array of Byte;
begin
Stream := TMemoryStream.Create;
try
Query1COMPANY_DATA.SaveToStream(Stream);
Stream.Position := 0;
SetLength(HoldArray, Stream.Size);
Stream.Read(HoldArray[0], Stream.Size);
finally
Stream.Free;
end;
end;