![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BLOB Stream возвращает 0 размер. [D6, IB6.x]
kavlad © (2002-09-05 20:25:00)Такая проблема. Создаю stream - CreateBLOBStream для чтения. Надо загнать его в байтовый массив. Но поток оказывается с 0 size"ом. Поле в базе естественно заполнено.
Помогите, пожалуйста.
MBo (2002-09-06 12:33:00) [1]Stream.Read(bytes[0],numbytes);
kavlad (2002-09-06 12:08:00) [2]Спасибо!
А нельзя ли как-нибудь скопировать поток в массив без цикла, или просто ускорить это копирование.
Black Cat (2002-09-06 09:47:00) [3]А такой вариант:
Var MS:TMemoryStream;
...
MS := TMemoryStream.Create;
try
TBlobField(ds.FieldByName(fieldname)).SaveToStream(MS);
MS.Seek(soFromBeginning, 0);
...
finally
MS.Free
end
kavlad (2002-09-06 09:05:00) [4]Код такой:
var
bytes: array of Byte;
b: Byte;
...
procedure BLOB2Bytes(ds: TIBCustomDataSet; fieldname: String);
var
i1: Integer;
stream: TStream;
begin
ds.Open;
stream := ds.CreateBlobStream(ds.FieldByName(fieldname), bmRead);
SetLength(bytes, stream.Size);
for i1 := 0 to stream.Size - 1 do
begin
stream.Read(b, 1);
bytes[i1] := b;
end;
stream.Free;
ds.Close;
outdata := bytes;
end;
В процедуру передается TIBTable.
Val (2002-09-05 20:38:00) [5]код?