Delphi怎样在Dll中使用数据模块DataModule

一、DLL调试方法:

      (1)、[Project-->Add Existing Project...]将DLL和宿主程序(就是使用本DLL的程序)添加到一个工程组中,可以同时调试DLL和宿主程序。

      (2)、 [Run-->Parameters...    ]在Host Application中填入宿主程序的完整路径然后选择
[    Project|Options.. ]选择Directories/Conditionals页面在Output directory中填入宿主程序所在目录(这是将编译的DLL程序输出到宿主程序所在目录下),然后就可以按运行(F9)来运行程序,在你需要观看的地方加入断点(F5),如正常使用的操作主程序,调用你的函数/过程的时候就会在你的断点处停下,可单步执行。按Ctrl + F7可以加入变量观察。有一招在DLL的工程文件选项中
ProjectOptionsLinkerEXE and DLL Options
把Include TD32 debug Info和Include remote debug symbols勾上试试。

二、DLL中使用数据模块DataModule(或表单Form)

      在DLL工程中使用到数据模块或表单,必须注意:在DLL中表单或数据模块都不是自动创建的,需要自己手工创建!这也是好多新手容易犯的毛病。

      那么如何创建呢?下面是一个简单的例子(DLL的完整源码),必要的地方加以解释:

     library DB_Excel;

uses
    SysUtils,
    Classes,Forms, activex,
    main in 'main.pas' {DataModule1: TDataModule};//DLL中使用到的数据模块

{$R *.res}

//这是一个EXCEL导入数据到Access中的函数。
function ExcelToAccess(ExcelName,Sheet,AccessName,DB_Table:string):Boolean;stdcall;
Var sSql : string;
begin
     try
      CoInitialize(nil);    //注意必须要添加这句
      DataModule1 := TDataModule1.create(application); //在这里创建DataModule1

      DataModule1.ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
         AccessName + ';Persist Security Info=False';
      DataModule1.ADOConnection1.Connected := true;
      DataModule1.adoquery1.Close;
      DataModule1.adoquery1.SQL.Clear;
        sSql :=
          'INSERT INTO    '+DB_Table + ' SELECT *' +
          ' FROM [excel 8.0;database=' + ExcelName + '].['+Sheet+'$]';
      DataModule1.adoquery1.Parameters.Clear;
      DataModule1.adoquery1.ParamCheck := false;
      DataModule1.adoquery1.SQL.Text := sSql;
      DataModule1.adoquery1.Execsql;
      result := true;
     except
      result :=false;
     end;
      freeandnil(DataModule1); //使用完后要释放,不然会报错的!

end;
//输出接口
exports
ExcelToAccess;

begin
end.

DLL中使用表单,应该与此类似,注意使用前要创建,使用完后要释放,这样应该就不会错了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值