DLL传TQuery参数报错,怎么解决?(100)

  • 主题发起人 主题发起人 qd_yjg
  • 开始时间 开始时间
Q

qd_yjg

Unregistered / Unconfirmed
GUEST, unregistred user!
DLL传TQuery参数报错,怎么解决?情况是这样的,主程序生成查询语句生成数据集,想把已经存在的数据集传到DLL中,DLL中一旦用到Query1.FieldByName('ziduan').AsString;就会在释放DLL的时候报错。只要不执行AsString就没有错,试过AsCurrency就没有问题DLL工程文件里面也引用了Sharemem,也放到了第一位。期间我也换过一种思路,传送TDataBase的指针,DLL中静态添加TQuery但是让我很意外,每次打开DLL中的Query,都会出现DataBase的登录界面,我很奇怪主窗体的DataBase.LoginPrompt已经处理了。最奇怪的就是,DLL调用多次后,内存不够了,显然有东西没有释放掉,我没有创建任何对象,怎么回事?现在只能在DLL中静态添加DataBase了。公司开发不能上网,要不我就把代码粘贴进来了。有没有知道的帮忙,很急!!!
 
在DLL中传对象我们也做过,总是有内存的问题后来用ADOQUERY,传它的_DATASET对象就可以了
 
在DLL中使用对象我一般用bpl包,反正对象都不能再其他开发环境里使用了,没必要再为了兼容性而DLL了
 
我用的是BDE,逼得我传BDE的TDataBase的指针,和SQL语句,调用DLL的第一次,DataBase总是会打开询问连接的提示框(主应用程序的DataBase.loginPrompt=False了),反复调用DLL多次后,内存不够了。很是奇怪,我没有创建DataBase啊,DLL中的Query是静态添加的。我用的是Delphi5现在我只能传主程序DataBase.Params.txt 和 主程序Query.SQL.Text了,麻烦
 
DLL的确和正常使用不一样,愁啊
 
DLL通过Interface的方式来调用EXE里的对象
 
后退
顶部