Почему-то неверно вычисляется BS.Size сразу после создания CreateBlobStream. Реальный размер задаётся только после попытки чтения потока.
Код: Выделить всё
var
BS: TStream;
fs: tfilestream;
begin
BS := nil;
try
with CreateOraQuery('select TestPkg.GetBlob from dual') do
try
Open;
First;
BS:= CreateBlobStream(Fields[0], bmRead);
fs := tfilestream.create('d:\1.dat', fmCreate);
try
BS.position := 0;
fs.copyfrom(BS, 0);
finally
fs.free;
end;
finally
Free;
end;
finally
BS.Free;
end;