"Oleg LOA" ...
>
> "Vlad Horsun" ...
> >
> > "Kovalenko Dmitry" ...
> >>
> >> > На всякий случай объясню - IBX всегда читает блоб целиком в память.
> >> > Оно
> >> > определяет р-р блоба с помощью isc_blob_info, выделяет память этого р-ра
> >> > и читает туда блоб. Причём читает именно то кол-во байт, которое вернул
> >> > isc_blob_info,
...
> Чё та я не понял где должен валится IBX?
>
> procedure ReadBlob(hBlobHandle: PISC_BLOB_HANDLE; Buffer: PChar; BlobSize:
> Long);
> var
> CurPos: Long;
> BytesRead, SegLen: UShort;
> LocalBuffer: PChar;
> begin
> CurPos := 0;
> LocalBuffer := Buffer;
> SegLen := UShort(DefaultBlobSegmentSize);
> while (CurPos < BlobSize) do
BlobSize - размер исходного (юникодного) блоба
> begin
> if (CurPos + SegLen > BlobSize) then
> SegLen := BlobSize - CurPos;
> if not ((isc_get_segment(StatusVector, hBlobHandle, @BytesRead, SegLen,
> LocalBuffer) = 0) or
> (StatusVectorArray[1] = isc_segment)) then
> IBDatabaseError;
Вот здесь. Ибо возвращается isc_segstr_eof (он пытается прочитать больше,
чем есть) и BytesRead == 0
--
Хорсун Влад