用delphi开发了一个管理系统,现在主程序太大,想分解成若干个bpl或者dll,在以前建立的有独立的数据库连接模块,现在想所有的dll 要用同一个数据库连接模块;以前做的dll都没连接过数据库,
哪位做过类似的 ,给点指导性意见啊?

解决方案 »

  1.   

    用COM+ 回复内容太短了~~~~~~
      

  2.   

    盒子上有的http://www.2ccc.com/downloads.asp?subcatalogid=101&pageid=2
      

  3.   

    把主程序代码中的function写到dll中.需要注意的是dll中的funtion最好不要有主程序中的对象操作,比如form1之类的,就是最好把dll函数写成公共函数,导出函数后面需要加上stdcall,函数参数最好不要使用string ,如果一定要用需要在uses下第一个引用ShareMem 然后导出,编译就可以了.其实dll就和写一般的程序差不多,注意一下就可以
      

  4.   


    我就是要做出dll ,单是每个dll 都要涉及连接数据库的,这个不知道如何了??
      

  5.   

    DELPHI的程序一般都是做成BPL的方式,做成DLL太麻烦,需要传实例句柄,像Application、Screen对象在每个DLL都不一致。
      

  6.   

    我开发的MIS系统就是分了几个DLL做的,其中DLL要进行初始化一下:  PShareData=^TShareData;
      TShareData=packed record
        RTLVersion:Real;             //RTLVersion
        ApplicationHandle:HWND;
        MainForm:TForm;
        ApplicationIcon:HICON;
        MainScreen:^TScreen;
        DBXConn:TSQLConnection;      //数据库连接
    //................还有很多属性,你根据自己的需要声明
      end;var
      ShareData:PShareData;procedure InitDLL(ptr:PShareData);
    begin
      if ptr^.RTLVersion<>RTLVersion then
        raise Exception.Create('RTLVersion not diffent!');
      if Application.Handle=0 then begin
        ShareData:=ptr;
        OldScreen:=Screen;
        Application.Handle:=ShareData^.ApplicationHandle;
        Screen:=ShareData^.MainScreen^;
      end;
    end;然后每个DLL就可以用ShareData^.DBXConn操作数据库了
      

  7.   

    采用原生ADO连接,传递参数采用POleVariant指向即可。
      

  8.   

    首先楼主要对DLL的使用要很熟悉,否则你会遇到很多的错误,而且也不好调试。
    在就是要好好对业务进行分析,放在DLL中的最好是和其它有较简单数据交换接口的东西。
    在要就是要找出造成主程序大的原因是什么??
       第一个原因是因为是窗体中用的图标和背景图片,不要在每个窗体上都放ImageList 放在一个数据模块窗体中,然后其它窗体引用就可以了,让一个图标在系统中只存在一份
    对于放在窗体上的图片,启动时的图片要搞成JPG格式,大小也搞成合适的,最好是放在同目录下,窗体打开时启动。
      第二个原因就是窗体较多,看看能不能合并,将无用的窗体删除掉
      第三个在就是使用了较多的第三方控件,或者是将第三方控件在窗体上放了一下,然后删除了,但引用的单元没有删除,有的第三方控件是非常大的。检查一下是有非要有必要使用或用其它的方法代替。
      第四个原因就是重复的放了很多的ADO控件,其实在你没有使用线程的情况下,是不会有多个ADOQuery同时提交或读取的情况的。将和数据库交互的部分独立出来,界面上不用ADOQ数据库感知控件。
      这些都检查过后,还发现编译后程序非常大,然后在考虑使用DLL一类的方式。将某些比较独立的业务模块封装,最好是使用COM+,比如一些模态的弹出窗体最适合放在DLL中,在使用COM+的时候一定要在测试工程中先了解和会使用了,如直接放在较多代码的工程中你会很难调试的。