关于dbexpress放入dll中使用后出现的异常 |
缺席
|
tcftt
一般會員 發表:1 回覆:0 積分:0 註冊:2006-09-15 發送簡訊給我 |
程序由MainForm和formDLL组成:(formDLL是一个DLL文件)
功能:MainForm调用formDLL,对数据表testtable进行操作. MainForm包含一个sqlcnt组件(TSqlConnection)(连接至SQL2K 数据库) formDLL包含,conn组件(TSqlConnection),dsp组件(TDataSetProvide),cds组件(TClientDataSet),sqy组 件(TSqlQuery), ds组件(TDataSource),dg组件(TDataGrid); sqy.sql为select col1,col2,col3 from testtable conn直接引用MainForm中的Sqlcnt. sql.connection:=conn; 这些组件互相连接, MainForm调用formDll正常. 对formDll进行操作: cds.Active:= true时, dg中可以正常显示数据. 保存数据至数据表时(cds.ApplyUpdate(0)),分两种情况: 情况A:当插入的数据,在数据表中不存在,因此可以正常操作,数据可以正常保存至数据表中. 情况B:当插入的数据,已存在于数据表中,此时,利用cds的OnReconcileError事件,可以捕捉到错误代码ErrorCode为1(即此数据已存在数据表中).捕捉到错误后,什么都不做,只显示我自定义的警告信息"此数据已存在". 退出formDll正常(至少表面没有弹出什么异常信息). formDll.Free; formDll:=nil; 操作就如上所述这么简单. 问题出在:当退出应用程序时,情况A,程序可以正常退出. 但是,一旦在操作formDll时出现过情况B,那么退出应用程序时,就一定会提示异常, 异常信息为: "0x004b3bd2"指令引的"0x00d5c5f0"内存,该内存不能为"read" 点击确定后,又弹出对话框:Runtime error 216 at 004b3bd2. 应用程序环境为xp(sp2),bds2006(update 2),delphi. 由于对DLL是初级接触,不知道什么地方会有问题.希望大家能参详参详. 在此先谢谢大家了!(由于源代码在家里的电脑上,这里暂时没有,如有需要,我再贴上来) |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |