"Vlad Horsun" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
> 
> "Kovalenko Dmitry" ...
>>
>> >     На всякий случай объясню - IBX всегда читает блоб целиком в память. Оно
>> > определяет р-р блоба с помощью isc_blob_info, выделяет память этого р-ра
>> > и читает туда блоб. Причём читает именно то кол-во байт, которое вернул
>> > isc_blob_info,
>>
>> > > Что же вы творите! Демоны!
>> >
>> >     А мы-то тута при чёма ?
>> >
>> >     А сам-то как - обрабатываешь ? :)
>>
>> Провайдер не свалится. Это точно на 99.9. Я на такие вещи не
>> закладывался.
> 
>    Вот молодец ! Я серьёзно... (без бу-га-га ;)

Чё та я не понял где должен валится 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
  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;
    Inc(LocalBuffer, BytesRead);
    Inc(CurPos, BytesRead);
    BytesRead := 0;
  end;
end;

Ответить