查看单个帖子
旧 2009-05-05, 09:43 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】error not that kind of class exception thrown from dd1.14.0

error: not that kind of class exception thrown from dd1.14.0
error: not that kind of class exception thrown from dd1.14.02
hi,
i upgraded my application from dd1.11 to dd1.14.02 for dotnet2003. now there is a strange exception thrown from dd1.14.02 when exploding a block reference: error: not that kind of classfff">. before upgrading to dd1.14.02, the following function worked fine.
the following is the function used to explode the block reference in my application:
void oddbwrapper::explode(oddbblocktablerecordptr pfatherblock, oddbblockreferenceptr pinsert )
{
oddbobjectid blockid = pinsert->blocktablerecord();
if( blockid.isnull() )
{
assert( 0 );
return;
}
oddbblocktablerecordptr prefblock = blockid.safeopenobject
(oddb::kforwrite);
oddbobjectiteratorptr pentiter = prefblock->newiterator();
for (; !pentiter->done(); pentiter->step())
{
oddbentityptr pentity = pentiter->objectid().safeopenobject
(oddb::kforwrite);
if( pentity->iskindof(oddbblockreference::desc() ))
{
oddbblockreferenceptr pinsertref = pentity;
explode(prefblock, pinsertref);
}
}
odresult res;
odrxobjectptrarray entityarray;
res = pinsert->explode( entityarray );
int entitynum = entityarray.size( );
if( res == eok && entityarray.size( ) > 0 )
{
for( int i = 0; i< entitynum; i++ )
{
oddbentityptr pentity = (oddbentityptr)entityarray[i];
pfatherblock-
>appendoddbentity( pentity );
}
pinsert->erase( true );
}
}
when cleaning the callstack, the following code ~odarray() { buffer()->release(); } fff">throws this exception.
what is the problem in my code or in dd?
any help appreciated.
probably the block being exploded contains a dimension entity. check please if recomputedimblock module presents in your application. dimension block recomputing was moved to a separate module. see release notes.
sergey slezkin
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)