尝试以Bpl的方式多人开发一个项目
DELPHI7+DBEXPRESS+SQL2000我所负责的是系统框架,子功能模块以BPL的方式多人开发,
现在想所有模块共用一个SqlConnection连到SQL服务器中
并能保证无论是设计期还是运行期都可以很好地运作。我现在的做法是将数据链接做在一公用Bpl的DataModule中,其它模块需要数据链接的就将包加入其中,但在设计时却需要将公用包打开,并先激活DataModul,子模块的数据控件才能找到公用链接,所以感觉不是很方便。有哪位高手可以给个更好的方法,谢!

解决方案 »

  1.   


    你最好是设置好导出文件路径
    .EXE和.BPL在一个路径
    .DCP也导出来
    .DCP也导出来用相对路径设置!
    .DCP包含了编译文件信息
    不用激活其链接文件
      

  2.   

    我以指明了导出路径,还是不行<HZ_ZMD(爱到哪里都会犯错>前辈试过这类问题没有?
      

  3.   

    还有,我在公用包里定义一个FORM类,作为所有模块的父类,并把此窗口加入Respostories中
    所以,每一个子模块包的主窗口都将NEW->OTHER里选择此FORM并继承下来,再把公用包加入其中后编译与运行都没问题,只是在设计的时候却需要同时将公用包的DPK打开,否则无法编辑模块中的Form,错误为:"找不到父类"。高手们,帮帮忙吧,只要解决,我立马加分。再谢!
      

  4.   

    你把你的公用包,在每个人的DELPHI中安装一下,就可以了。
    不过,我认为你这样做不好:1、运行速度很慢;2、没有达到设计包的目的,没有体现出
    包的优势;
      

  5.   

    首先感谢各位前辈的应答(这里的人气果然比CSDN旺)
    我这里用一个公用DataModul的意思是想降低SQL服务器的负荷,因为每一个Module都建一个到相同数据库的SqlConnection的话,总是不明智的。
    我现行的做法,运行是没问题,只是设计时不太方便.
    TO gencan(无敌) :
      你可能没明白我的意思.TO jxc163(一水寒):
      非常想参考下,[email protected] 不胜感激!
      

  6.   

    我的做法:1. Main.exe + 多个 bpl, Main以 LoadPackage/unLoadPackage 方式与 bpl工作2. LoadPackage 时,将主程序中的 SQLConnetion 传到 bpl 中3. 每个bpl 中有自己的 DataModule,也有一个 SQLConnetion, 它仅用于设计期,一旦被 主程序 Load,就将 传来的 SQLConnection 替代原有的设计期的组件(做一个通用方法实现替换SQLConnection的功能)//下面是 BCB 代码,用于替换 TSocketConnection, 类似于 SQLConnection
    void __fastcall SetRemoteServer(TSocketConnection *SocketCon,TComponent *ParentComponent)
    {
     TComponent *Temp;
     TClientDataSet *tmpDataSet;
     for(int i=0;i<ParentComponent->ComponentCount;i++)
        {
         Temp=ParentComponent->Components[i];
         if (dynamic_cast<TClientDataSet *>(Temp) != NULL)
            {
            tmpDataSet=(TClientDataSet *)Temp;
            tmpDataSet->RemoteServer=SocketCon;
            }
        }
    }
      

  7.   

    为了设计期方便,每个人在自己的bpl里静态加一个connection,到程序发布时,在去掉即可;
    只是为了设计方便,但程序代码必须还是按发布时的写就行了;
    我做的项目就是这样做的,很方便;
    app(main,首先创建commonDM,然后依次创建其他功能块)
    commonDM.bpl(adoconnontion,commonForm)
    module1.bpl(静态引入connection,发布时删掉,里面的所有连接用commonDM.bpl中的连)
    module2.bpl(静态引入connection,发布时删掉,里面的所有连接用commonDM.bpl中的连)
    module3.bpl(静态引入connection,发布时删掉,里面的所有连接用commonDM.bpl中的连)
      

  8.   

    我们是这样做的,   在我们的系统部分中写好了DataMoudle,都连接好,然后现在系统部分写个模板窗体,这个窗口Uses了这个DataMoudle,然后将这些部分作为开发的基本模块,都加到工程中。
       下面的程序员写的时候就从模板上继承,很方便的!无论是在设计期,还是运行期都运行良好!
      

  9.   

    codehunter008 的主意不错!应该可行!