CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  网络通信/分布式开发

使用CreateOleObject调用COM,关闭子窗口时,父窗口被一起关闭,是否资源释放问题?!

楼主yyq_leaf(c++ new learner)2006-06-03 11:37:17 在 Delphi / 网络通信/分布式开发 提问

Project->ImportTypeLibrary->Add"SBSPCOM.DLL"->Create   Unit  
  定义变量:  
  uses   Comobj;//   Unit_UIdefined,  
   
  var  
      DeviceID                     :   Smallint;           //SBSPCOMLib.SecuBSP  
      objSecuBsp                 :   variant;     //   Declaration   variable   for   SecuBSP   Object  
      objDevice                   :   variant;     //Store   Device   ID   etc.  
      objExtraction           :   variant;     //Store   &   Process   FingerPrint   Data  
      objMatching               :   variant;  
      objFPData                   :   IFPData;   //  
      szFIRTextData           :   wideString;//Store   The   Finger   Print   Data   after   Encode.  
      biFIR1,biFIR2,biFIR_First,biFIR_Second   :   array   of   byte;   //Store   The   Finger   Print   Data   Byte.  
   
      FirstFIR,SecondFIR               :   WideString;   //objExtraction.TextEncodeFIR       指纹数据  
      arrFP   :   array[0..799]   of   byte;    
  调用COM:  
          objSecuBsp     :=   CreateOleObject('SBSPCOM.SecuBSP');    
          objDevice       :=   objSecuBSP.Device;                                    
          objExtraction     :=   objSecuBSP.Extraction;  
          objMatching         :=   objSecuBSP.Matching;  
          objFPData             :=   IFPData(IUnknown(objSecuBSP.FPData));  
  调用取数据:  
  procedure   TFrm_Capture.TimerFirstTimer(Sender:   TObject);  
  var  
      len   :   Integer;  
  begin  
      try  
          TimerFirst.Enabled   :=   False;  
          TimerSec.Enabled       :=   False;          
          LblCptMsg.Caption   :=   'Put   your   finger   on   the   sensor   please!';  
          LblCptMsg.Refresh;  
          objDevice.Enumerate;  
          objDevice.Open(2);     //  
          SetInitValue(PicFirst.Handle);  
          objExtraction.Capture(1);  
          Len   :=   objExtraction.FIRLength;  
          biFIR1   :=   nil;  
          SetLength(biFIR1,   Len);   //biFIR  
          biFIR1   :=   objExtraction.FIR;  
          szFIRTextData   :=   objExtraction.TextEncodeFIR;  
          FirstFIR   :=   objExtraction.TextEncodeFIR;  
          objFPData.Export(biFIR1,2);  
          if   objFPData.ErrorCode=0   then  
          begin  
              biFIR_First   :=   nil;  
              Len   :=   objFPData.FPDataSize[0];  
              SetLength(biFIR_First,   len);  
              biFIR_First   :=   objFPData.FPData[0,0];  
          end;  
          objDevice.Close(2);  
          //取完数据,关闭子窗口  
    Frm_Capture.Close;  
      except  
      end;  
  end;  
   
  //父窗口调用子窗口  
  procedure   TFrm_Main.Button2Click(Sender:   TObject);  
  begin  
      if   not   Assigned(Frm_Capture)   then  
          Frm_Capture   :=   TFrm_Capture.Create(nil);  
      Frm_Capture.Visible   :=   False;  
      Frm_Capture.ShowModal;  
      sFPData2   :=   Frm_Capture.sFPData;//这个变量子窗口有的,  
      FreeAndNil(Frm_Capture);  
  end;  
   
  请教大家:由于某种原因,需要调用两次子窗口,在第一次调用并关闭时,一切正常(父窗口不会被关闭),  
  但是第二次关闭子窗口时,出现故障,父窗口被一起关闭,  
  并有时会出现异常错误:  
  Access   Violation   at   address   '十六进制数' in   module   'ntdll.dll'.....  
  问题点数:100、回复次数:4Top

1 楼yyq_leaf(c++ new learner)回复于 2006-06-03 12:19:57 得分 0

oleaut32.dll  
  还有这个错误,  
  Top

2 楼yyq_leaf(c++ new learner)回复于 2006-06-03 12:33:53 得分 0

WinXP   Professional   +   Delphi   7  
  Top

3 楼yyq_leaf(c++ new learner)回复于 2006-06-03 12:39:10 得分 0

会有这两个错误时常弹出,  
  Access   violation   at   address   77121829   in   modulte   'oleaut32.dll'.Write   of   address   011C3000.  
  和  
  Access   violation   at   address   7C938FEA   in   module   'ntdll.dll'.Write   of   address   00000010.  
  Top

4 楼6rl(海)回复于 2006-06-03 15:10:46 得分 100

我也想知道Top

相关问题

关键词

得分解答快速导航

  • 帖主:yyq_leaf
  • 6rl

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo