我在做一个大型的MIS系统,有很多很多模块,现在我想编写一个主程序,而把其他的模块都封装为一个个的小文件,通过主程序调用,更新程序的话更新对应的小文件就可以了。
有以下几天需要注意:
1.主程序和模块之间需要传值。
2.模块和模块之间也需要传值。
3.主程序可以大一些,但是子程序一定不能超过1M请大家给出解决方案。

解决方案 »

  1.   

    这是一个进程间传递参数的问题,和谁用delphi做过大型MIS系统有什么关系?
    1 你的小文件是什么,.exe?.dll?.ocx?
    2 如果是参数你可以用消息或者命令行参数
    3 如果是比较大的,你可以用临时文件
      

  2.   

    我用注册表传值,但保密性不好。另外,在一个项目内,不要用Public变量能在Form之间传值吗?
      

  3.   

    如果全部做成DLL,可能会比较麻烦,当然,这的确是一个好的思路。
    就算一个大的MIS系统,其EXE文件也不会太大的
    如果用ASPACK压缩一下的话,最多也就是2M吧
      

  4.   

    to firetoucher(风焱) 
    1.小文件最好是.dll或者.ocx我的目标就是做成和联众游戏类似的东西,模块可以下栽来用能指点一些具体的东西吗?比如如何把一个form界面封装到.dll中?
      

  5.   

    你先按模块用exe写好,然后编译成dll就OK了。很简单的。
      

  6.   

    楼上能不能具体点?如何按模块用exe编号,然后编译成dll?
      

  7.   

    我来说几句吧.
    建议你开始就使用.dll文件.
    你在更改你具体的模块时不需要整个程序都编译,而只需要更换单个的dll.
    你可以做成dll上传服务器,随后客户端检查当前模块是否有更新的版本号,随后可以根据dll的版本号来控制客户端是否需要下载.
    并且dll文件比exe文件一般都要小.
    我觉得对于大型的系统尤其需要这样.
      

  8.   

    我想楼主主要关心的事怎么把窗体封装到DLL中吧我没有做过学习……
      

  9.   

    如果考虑程序的扩展性的话建议把具有一定功能独立性的模块写成DLL.不管怎么样大型的MIS一定要用COM甚至更高的框架,如果是分布式的还要写成DCOM,这样只要提供一定的接口给Dll就ok了
      

  10.   

    Delphi的包技术
    看我的回答
    http://expert.csdn.net/Expert/topic/1974/1974304.xml?temp=.9995996
    http://expert.csdn.net/Expert/topic/1962/1962766.xml?temp=.2309839
      

  11.   

    Delphi的包技术最合适
    看我的回答
    http://expert.csdn.net/Expert/topic/1974/1974304.xml?temp=.9995996http://expert.csdn.net/Expert/topic/1962/1962766.xml?temp=.2309839
      

  12.   

    包技术不实用
    也是中看不中用的技术
    如果用DLL和小EXE
    你也别指望能小到哪去
    只要使用了database
    就会大于300K每个
    如果你使用了一些功能强大的复杂的控件
    不会小于1M
    传值的话可以使用公共文件或是公用内存区
    在MIS中不必太担心保密的问题
    因为这种传值只是瞬间的,何况你用符号传值
    谁知道这是什么东西
    用完后可以直接删除掉
    楼上有人言道用ASPACK压成EXE
    如果EXE太大的话
    这种压缩有可能出现问题的
      

  13.   

    我做过一个大型的,子模块全部用dll方式,不过有些单元可以公用,通过主窗体来调用一些公用变量,子模块之间要互相传递参数的话也要先通过主程序,将变量传进dll中
      

  14.   

    Focus(老鱼) 
    老大
    你用过包没有
    你对他了解的有多深,看样子你是没太用明白把
    或者会用,但并不会更好的利用它;
    如果Delphi的包技术用好了,那是很不错的
    看看Delphi发布组件时,全部用的是包,就可见一斑了;
      

  15.   

    推荐大家看看李维先生对包技术与Dll在软件框架上的应用方面的论述,会有启发的;
      

  16.   

    DLL用多了,修改起来不方便!如果不是很精通DLL的话,你就会一些很奇怪的问题!
      

  17.   

    用dll,数据连接用 *.udl,通过句柄传递参数,执行事件.
      hWnd:=FindWindow(nil,PChar(trim(e_class.Text)));
      SendMessage(hWnd, WM_COMMAND, 0, strtoint(trim(copy(ww,1,k))));