我用Delphi6写了个DLL,主要想用来访问数据库的,
在这个DLL中含有:taMoudle、Adoconnection、AdoQuery
编译完成之后,我在另外程序中调用时老是出现:“Access Violation at address xxxxxxx”。
而我将与数据库有关的代码去掉时,却可以。也就是说错误源头应该是操作数据库发知的。
但应该怎么解决呢,帮帮我!
在这个DLL中含有:taMoudle、Adoconnection、AdoQuery
编译完成之后,我在另外程序中调用时老是出现:“Access Violation at address xxxxxxx”。
而我将与数据库有关的代码去掉时,却可以。也就是说错误源头应该是操作数据库发知的。
但应该怎么解决呢,帮帮我!
解决方案 »
- DBGRID主从表
- 大家知道这个是什么空间啊tvideowindow
- 请问写进销存软件、财务软件或ERP,除了编程技术之外,还应该补充哪些业务知识?
- 小弟不才,在delphi2010居然找不到在哪里打开工程文件
- 经过数周的努力, 数据同步功能做好了。散分了!
- 有谁知道DELPHI皮肤如何修改?
- query 导出 excel 谢谢!
- 如何编写有用户界面的服务程序?
- 请教高手, 如何用TREEVIEW显示一个数据库中的所有的表,同时每点一个表名则在F1BOOK中显示及修改所选中表, 在点另一个表前进行保存,
- THKStreams 的密码设置老有问题,高手进来看看!
- edit或者maskedit只能限制某个字符的输入,能否像datetimepicker那样限制月份和天?
- 请问有查看DLL的函数及其参数的软件吗?
我是新建一个DLL工程,在这工程添加一个DataMoudle,Adoconnection、AdoQuery。
函数也是写在DataMoudle(unit1)中
var
dm : TDataModuleprocedure initproc (); stdcall;
begin
dm := TDataModule.Create;
...
end;最后不程序结束时要dm.Free
楼主和我一样一样
用DLL来操作数据库
但是我觉得这是不明智的
很容易出问题
并且数据库和程序紧密相关
独立性并没表现出来
虽然也出了很多类似的问题:
主要是:
1,DLL中数据连接要随时和主程序分开
2,使用ADOQuery1的时候,要随时使用随时释放,但是释放的时候请小心,不然容易出错的如果楼主不介意,可以把代码帖出来大家看看
可以增加一个初始化过程,如initProc
var
dm : TDataModuleprocedure initproc (); stdcall;
begin
dm := TDataModule.Create;
...
end;
====================================
这样能行吗,好像复杂了很多,谁有更好的办法吗?
这样二次开发时就不用管数据连接了,
你能不能把你的 initproc写具体点
注意,在程序结束之前必须得释放创建的组件。
if not Assigned (dm.adoconnection) then //也就是在使用组件之前可以先判断一下
dm.adoconnection := TAdoConnection.Create (nil); //
dm.adoconnection.open;
DataModule已经是建好了(这个DLL中含有:dataMoudle、Adoconnection、AdoQuery)还需要再建DM吗?
谢谢!
use Comobj;
CoInitializeEx(nil,0);
就好了。
dd.create(nil);