CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

以Bpl的方式多人开发一个项目所遇到的问题

楼主HsyPrg(图灵心)2003-12-04 11:53:26 在 Delphi / VCL组件开发及应用 提问

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

1 楼wweijie(可爱小果果)回复于 2003-12-04 13:32:55 得分 0

我们的办法是运行时用代码指定,不在设计时访问数据库。Top

2 楼HsyPrg(图灵心)回复于 2003-12-04 13:36:14 得分 0

但我想让其它兄弟能在设计时很方便使用,有没有好办法?Top

3 楼HZ_ZMD(爱到哪里都会犯错)回复于 2003-12-04 13:38:42 得分 5

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

4 楼HsyPrg(图灵心)回复于 2003-12-04 14:02:45 得分 0

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

5 楼HsyPrg(图灵心)回复于 2003-12-04 14:10:42 得分 0

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

6 楼gencan(无敌)回复于 2003-12-04 14:23:54 得分 0

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

7 楼jxc163(一寒)回复于 2003-12-04 14:38:46 得分 5

我有一个关于数据模块的包例子,不知你是否有用。Top

8 楼HsyPrg(图灵心)回复于 2003-12-04 16:06:38 得分 0

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

9 楼gong_hui2000(gong_hui2000)回复于 2003-12-05 21:17:23 得分 20

我的做法:  
   
  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;  
                  }  
          }  
  }  
  Top

10 楼qixin000(小齐)回复于 2003-12-05 21:47:55 得分 5

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

11 楼codehunter008(马里奥)回复于 2003-12-05 21:55:08 得分 15

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

12 楼7838205(我爱Delphi)回复于 2003-12-06 15:43:56 得分 0

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

相关问题

  • ??使用vc开发项目时,常会遇到这种情况:
  • 开发项目中遇到几个奇怪的问题.求解!
  • 请大家列举项目开发过程中所遇到的风险
  • asp.net开发项目
  • 急!~项目开发完成遇到奇怪现象!~请各位高手帮忙解决!
  • RealSDK 开发遇到难题
  • c#开发项目方向
  • 用JBuilder7.0开发项目!!
  • 关于项目开发(急)
  • 项目管理和开发

关键词

  • 模块
  • 项目
  • 连接
  • 文件
  • 系统
  • bpl
  • commondm
  • 导出
  • 路径
  • dcp

得分解答快速导航

  • 帖主:HsyPrg
  • HZ_ZMD
  • jxc163
  • gong_hui2000
  • qixin000
  • codehunter008

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo