+ -
当前位置:首页 → 问答吧 → 接口访问对象报错问题

接口访问对象报错问题

时间:2011-08-31

来源:互联网

今天发现一个delphi2006奇怪的bug,代码是这样的

function CalcPlaneBaseNormalByEdo(const AEdo: IGCLElementDrawObj): TGGLPoint3d;
begin
  Result := CalcPlaneBaseNormal(TGCLFaceShape(TGCLElementDrawObj(AEdo.GetObject).Shape));
end;

AEdo.GetObject访问的是接口的对象

CalcPlaneBaseNormal我加了异常处理,没有走到,原因肯定参数的问题
在这个函数函数加了异常处理,异常里面重新走就没有报错

换了一个方法 接口里面取对象用变量缓存,之后访问就报错了
function CalcPlaneBaseNormalByEdo(const AEdo: IGCLElementDrawObj): TGGLPoint3d;
var
  oObject: TObject;
begin
  oObject := AEdo.GetObject;
  Result := CalcPlaneBaseNormal(TGCLFaceShape(TGCLElementDrawObj(oObject).Shape));
end;

求高手帮忙解释一下

作者: wxxj26   发布时间: 2011-08-31

补充一下,

这个是偶先的,多线程的访问的情况下出现的,感觉和多线程应该没有关系,但是没有想明白为啥

作者: wxxj26   发布时间: 2011-08-31