我公司上一个小公司(技术很烂)作的ERP系统是用DELPHI6 编写的其结构是作了几个基类,然后功能模块都是通过继承产生并都作成BPL,主程序执行所有的程序都是通过装载BPL然后 show 的,数据操作全部都是绑定完成,程序运行及不稳定,有时功能窗口关不了,有时主窗口关不了.很脑火是不是delphi编写的程序都是这个样子(公司最近买了源码,小弟我刚接触delphi 6),源码结构很不清晰,我想问一下用DELPHI开发大型点的程序都是用的这种架构吗?要不是点拔小弟一下...我还菜,我原来学VB的是将所有的窗口都建立在工程里面(很土)exe编译出来很大,DELPHI是不是这样?有人建译我将系统用delphi 7 重编译一次,说会稳定我试了一回有的地方运行会出错,这样作真的会稳定吗?

解决方案 »

  1.   

    我的意思是这种BPL装载的方式,ERP这种大数据软件(全部绑定,数据源很多可能释放不彻底),不用BPL这种方式有没有另好的方法,谢谢
      

  2.   

    BPL装载的方式其实也是没有错的,不过不同的“大虾”有不同的分割而已。这种框架,可让部分功能(bpl)的变更不影响其他(BPL),而且适合大系统的开发。事在人为嘛!更好的方法也是有的,就是用脚本动态生成界面,不过,界面就没有这么灵活(界面相对固定,就只有几个模本),不过程序很稳定。
      

  3.   

    一般大的系统都有好多人一起编
    每个人的水平都不一样
    编程风格也不一样
    出错是再所难免的
    估计你现在能做的也只能帮他们改BUG
    要重新换架构肯定是不可能的了
      

  4.   

    用BPL分割本身没什么问题,你说的有时候一些窗口关不了那是代码的问题……
    和架构没有关系!用BPL和用DLL分割都差不多,掌握不好的话就会出现一些问题!
      

  5.   

    谢谢大家的指点,多谢谢了!问一下窗口关不了是不是“数据源”释放不成功导至的还是bpl卸装导至的大家能不能分析一下,大家释放“数据源”bpl卸装有没有更好的方法 
    我的代码里写的是   数据窗口.free;bpl卸装
     bpl窗口 public
        iCurrentBplHandle:HMODULE;procedure FormDestroy(Sender: TObject);
    begin
      Fbasemod:=Nil;
      postmessage(主窗口.Handle,WM_CLOSEPACK,iCurrentBplHandle,0);
    end;主窗口
     
    type
    procedure MyUnLoadPackage(var Msg: TMessage);message WM_CLOSEPACK;
    ....bpl窗口.iCurrentBplHandle:=LoadPackage('bplfilename');procedure MyUnLoadPackage(var Msg: TMessage);
    begin
      if Msg.WParam<>0 then
      begin
         UnloadPackage(Msg.WParam);
      end;
    end;