Кусок из модуля IBCustomDataSet.pas:
if FField is TWideMemoField then
begin
if FBlobStream.Database.CharacterSetCodePage = 0 then
result := FBlobStream.Write(Buffer, Count)
else
Result := DecodeLength(FBlobStream.Database.CharacterSetCodePage);
end
else
result := FBlobStream.Write(Buffer, Count);
В некоторых случаях (когда читается блобовское поле AsString, другие условия не ясны) почему-то FBlobStream.Database = nil.
Таких кусков кода три по модулю.
Проблема, предположительно, здесь:
function TIBCustomDataSet.CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream;
if Buff = nil then
begin
fs := TIBBlobStream.Create;
fs.Mode := bmReadWrite;
FBlobStreamList.Add(Pointer(fs));
result := TIBDSBlobStream.Create(Field, fs, Mode);
exit;
end;
Предположительно в этом куске не хватает fs.Database := Database;.