Subject Re: [IBO] Problems in TIB_BlobStream with the last Beta - The Fix
Author m. Th.
Daniel Rail wrote:
> Try replacing FColumn.FieldNo with FFieldNo, since FFieldNo is
> assigned in TIB_BlobStream.Create.
>
Yes, it works. See the code bellow.

> And, I'm very interested in your findings. Because I want to upgrade
> to IBO 4.9.3, but the issue with the bookmarks and DevExpress turned
> by away for now. And, the blob stream issue isn't just related to
> DevExpress, because I would've hit it in my own code.

Sure. Also, the this problem (perhaps) is related to Blobs rather to
DevEx. specifics.
I succeeded to run a simple app with DevExpress as GUI layer. However, I
have a real world application which still throws enough AVs. Also, if
you (or someone else) has similar findings please report here. And now
the fix:

Find in IB_Components.Pas the following procedure, add the lines marked
with mTh + and comment the ones marked with mTh - (or, easier, just
copy/paste the following):

procedure GetNewBlobNode( ForReading: boolean );
begin
FBlobNode := AllocMem( SizeOf( TIB_BlobNode ));
ClearBlobNodeData( BlobNode );
BlobNode.BlobID := pisc_quad(SQLVAR.SQLData)^;
BlobNode.BlobFieldNo := FFieldNo; //mTh +
// BlobNode.BlobFieldNo := FColumn.FieldNo; //mTh -
if ForReading then
try
tmpArrayDesc := nil;
case SQLVAR.SQLType of
SQL_ARRAY,
SQL_ARRAY_:
tmpArrayDesc := @(FColumn as TIB_ColumnArray).ArrayDesc;
//mTh: Still blows here!
end;
if FFieldNo >= 0 then //mTh +
// if FColumn.FieldNo >= 0 then //mTh -
Row.Statement.GetBlobNodeData( @SQLVAR, tmpArrayDesc, BlobNode );
except
...


HTH,

m. Th.