Subject | Re: [IBO] Problems in TIB_BlobStream with the last Beta - The Fix |
---|---|
Author | m. Th. |
Post date | 2009-07-21T07:49:34Z |
Daniel Rail wrote:
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.
> Try replacing FColumn.FieldNo with FFieldNo, since FFieldNo isYes, it works. See the code bellow.
> assigned in TIB_BlobStream.Create.
>
> And, I'm very interested in your findings. Because I want to upgradeSure. Also, the this problem (perhaps) is related to Blobs rather to
> 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.
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.