Subject | Re: [IBO] Problems in TIB_BlobStream with the last Beta - The Fix |
---|---|
Author | Jason Wharton |
Post date | 2009-07-28T02:38:13Z |
Are you sure these are problems?
When I release 4.9.4 please review this and let me know.
I hope to actually get it out tonight.
Jason Wharton
When I release 4.9.4 please review this and let me know.
I hope to actually get it out tonight.
Jason Wharton
----- Original Message -----
From: "m. Th." <th@...>
To: <IBObjects@yahoogroups.com>
Sent: Tuesday, July 21, 2009 1:49 AM
Subject: Re: [IBO] Problems in TIB_BlobStream with the last Beta - The Fix
> 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.