如题

解决方案 »

  1.   

    你传进去不就得了,举个例子
    library Chda;{ Important note about DLL memory management: ShareMem must be the
      first unit in your library's USES clause AND your project's (select
      Project-View Source) USES clause if your DLL exports any procedures or
      functions that pass strings as parameters or function results. This
      applies to all strings passed to and from your DLL--even those that
      are nested in records and classes. ShareMem is the interface unit to
      the BORLNDMM.DLL shared memory manager, which must be deployed along
      with your DLL. To avoid using BORLNDMM.DLL, pass string information
      using PChar or ShortString parameters. }uses
      SysUtils,
      Classes,
      Forms,
      ExtCtrls,
      windows,
      ADODB,
    你自己的工程文件;{$R *.res}Function GetFormOne(aCn:TADOConnection;aApp:TApplication;aModuleName:PChar):TForm; export; stdcall;
    begin
      FCn:=aCn;
      FModuleName:=aModuleName;
      Application:=aApp;
      Result:=TChdaForm.create(Application);
    end;procedure SetOldApplication;stdcall;export;
    begin
      Application:=FApp;
    end;exports
      GetFormOne,SetOldApplication;begin
        FApp:=Application;
    end.FCn可以定义在TChdaForm里面
      

  2.   

    能否直接使用主程序的ADOConnection,而不是传入
      

  3.   

    靠,不然你就传ConnectionString进去,PChar。
      

  4.   

    直接传对象!不要传ConnectionString!
      

  5.   

    看来楼主还没有搞清:对象实例变量是一个引用指针.
    呵~~,一楼所说的直接传入一个连接组件,也就是使用一个引用指针,把主窗体的连接组件当成参数传给DLL使用,也就是说,通过这个"引用指针",你就是使用的主窗体上的连接组件了.只不过是通过"指针"传入到DLL内部了.