当前位置:主页>销售管理软件> 列表

包动态加载和动态注册类的问题,能不能不用运行时包VCL.B 找库存管理软件下载

仓库管理软件版1楼: 包动态加载和动态注册类要求程序必须编译成with run-time lib形式,能不能不用运行时包VCL.BPL,但好像动态注册类又无法使用,指定其parent就会出“cannot assign a Tfont to a tfont”的错误,怎样才能正确解决????
因为我的程序只要是编译成with run-time lib形式,就会出现“无法定位程序输入点 ***在vcl50.bpl”,不知是何原因??
请兄弟们多帮忙!!!!谢

2楼: 确实有难度!有高手吗??? 如库存管理软件下载

3楼: 可以不用.VCLXXX包可以重新编译的.只要运行时的单元全部都重新打包,和你的包都打成一个包就行了.
网上有一篇这样的文档.我以前试过是可以的.我现在的工作上网不太方便.只能在家里上网.对你的回答不够便捷,还请原谅
下面是摘抄过来的那篇文章:
----------------------------------------------------------------------
  这是阿亮第一次写文章,有不正确的地方,欢迎讨论指正。
  
  首先要更正一个错误的结论:只要程序用到Borland的包,就必须要带上VCLxx.bpl。
  
  非也!
  
  想必用Dll来实现功能模块分割的伙计们都有痛苦经历:无法导出类;无法共享主进程的全局变量;调用Dll时可能要传递一大堆参数;令人心烦的PChar;等等等等...


  Borland通过包Borland Package Library来解决了这些痛苦,在这里我们只讨论运行时包。
  
  阿亮在2003年就因为工作原因研究了一下Delphi 5的包,并成功的将一个大的系统按功能模块分拆到单个运行时包文件中,当时就想把VCL50.bpl重新编译一下,没有成功,很不甘心!头段时间安装了 Delphi 7,想重新试一下,结果居然成功了,也就是说,你可以写一个个头很小的exe文件(这对于有些程序员来说非常有吸引力,他们希望自己的的程序越小越好,甚至到了痴迷的程度,阿亮也算其中一员),可以多小呢?譬如20KB的exe,这个主程序只是一个框架,它可能仅包含一个主窗休、初始化一些应用需要的全局结构或变量、实现动态装入和卸载包的代码,后面至少带一个被重新编译的VCL包,当然,这个VCL包可能包含所有的Delphi提供的标准单元,也可以仅包含你的应用需要的单元。
  
  你可能发布的应用程序结构可能是以下结构:
  
  App.exe (* 主程序 *)
  Borland.bpl (* 被重新编译过的Borland VCL单元运行时包 *)
  Common.bpl (* 应用程序公用包, 所有的全局结构和单元定义和实现在此包中,主程序和模块包共同uses此包的的共用单元,以实现全局共享 *)
  Module1.bpl (* 模块一 *)

  Module2.bpl (* 模块二 *)
  ...
  
  其中Borland.bpl和Common.bpl是静态装入的,也就是说App.exe被Windows装入时这两个文件必须在App.exe能够找到的路径中,典型的是在App.exe相同的文件夹或Windows System 文件夹中。
  而Module1.bpl、Moudle2.bpl...是需要动态装入的,这一点对于一个应用系统的扩展性非常非常重要!对于应用系统的的可定制性、控制应用的功能结构来说都是具有决定性的意义,理论上说只要你把主框架搭好了以后,模块是可以无限制添加的,你可以用以此框架为基础搭建一个 如进销存系统,同时它还可以是一个图形系统,或者是一个复杂的ERP系统,这一切都决定于你发布的模块包。
  
  说了这么多,现在我们开始重新编译rtl70.bpl,这个包是所有VCL包的祖先(至少Delphi 7是这样),它包括一些重要的基础单元,如Windows、SysUtils、Classes等,且这个包是唯一一个不依赖其它运行时包的运行时包。
  
  打开Delphi 7
  
  1、 关掉Delphi 创建的默认工程(如果有的话);
  2、 File->New->Other,选择Package;
  3、 New 一个Form,编译一次;

  4、 再切换窗口回到Package – Pacakge1.dpk;
  5、 双击Requires节点下的rtl.dcp,将得到rtl.dpk;
  6、 按F12切换到rtl.dpk源代码,将其另存如d:\delphi.dpk;
  7、 Close All;
  8、 Open d:\delphi.dpk,将Options中的Output Diretory及DCP Output Directory文件夹都改在.;
  9、 编译它,出错时将VarHlpr、StrHlpr删除掉,阿亮目前还不知道此两单无是干嘛用的,删掉再说;
  10、 编译成功,将在D:\生成Delphi.bpl和Delphi.dcp两个文件,其它的如VCL、VCLX、VCLDB等等运行时包的单元名也可以此法得到,添加到Delphi.dpk后面重新编译即可。
  
  这样,发布应用时就不用带着VCL70.bpl、RTL70.bpl、VCLX.bpl等文件了,就一个Delphi.bpl就成了。
  
  当然,凡事有利有弊:
  
  1、 如果共用包(Common.bpl)被重新编译,则主程序和所有的模块包可能都需要重新编译,所以前期共用包和主程序框架的结构要尽可能考虑完整一些;
  2、如果你用到第三方控件,请选择那些有源码的控件,因为它们的运行时包也必须要重新编译,去掉RTL、VCL等需要的包,换成Delphi.bcp,这应该也容易,阿亮就将Dxexpress的所有文件重新编译得到Express.bpl。我们很幸运!不是吗?在我们这个时代这些东东很容易找到,并且它们都写得很棒,为什么不用呢!

  3、 你可能需要专门写个工具来维护包给你带来的模块版本问题;
  4、 如果你有多应用个以动态包的形式发布,解决方法:其一,将Delphi.bpl安装到Windows System文件夹,让你的应用共享这个包;其二,为每个应用发布一个Delphi到应用的安装目录!?而这样将有背于M$的思想,这需要你选择。

4楼: 帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯

5楼: to:wr960204
多谢!我先试试,工作量不小啊!!!哈哈
这篇文章先前也看过,没敢动手,那么多包,想想头都大!
有问题再请教。

6楼: 帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

个人网站站长开发推广同盟,让所有人知道你的世界!

http://www.source520.com/search/search.asp

╰=========================================╯