在我的头脑中一直有这样一种概念:只有你自定了自己的组件,然后把它装在delphi中时才需要包,知道我看到一位超一流高手的用法后才感觉自己的无知。
  他是这样用的,包中包含的单元全部是窗体单元,或者是一般的功能单元,根本没有涉及到组件,问题来了,他为什么要把这么多窗体单元防在一个包里面???
为什么?为什么????????????????????  还有你打开dpk文件 后不是有一个contain和一个require吗,contain是放包中要包含的单元,那么require是什么的干活??  打开dpk文件后,有编译和安装这些菜单,如果我的包里面不包含任何组件,我点击install后会怎么样?有什么后果??

解决方案 »

  1.   

    require就是contain中包含单元所要依赖的单元。require中的单元保证包能正确被编译和安装!
    至于为何把一大堆窗体放进包里,着实摸不清,我就不宜乱说了,这些窗体应该不会是普通的船体。可能内部实现了依赖于窗体运行的组件或别的什么的吧!等待高手意见。
      

  2.   

    require后面跟的是别的包,contain后面是跟单元。有些包是经常被别的包require的,例如vcl、rtl等。
      

  3.   

    D e l p h i的包能把应用程序的部分代码放到一个单独的模块中,它能被多个应用程序所共享。如果
    你有用Delphi 1.0和Delphi 2.0开发的代码,利用包技术,在不修改任何代码的情况下就能把它们利用
    起来。
    可以把包看作是若干个单元集中在一起以类似于D L L的形式存储的模块(Borland Package Library
    或B P L文件)。应用程序在运行的时候链接上这些包中的单元而不是在编译/链接时,因为这些单元的
    代码存在于B P L文件中而不是存在于E X E或D L L中,所以E X E和D L L的长度将变得更短。
    你能创建并使用下列四种类型的包:
    • 运行期包,这种类型的包中的单元只有在应用程序运行时才被调用。当应用程序运行时,需要
    找到它所使用的运行期的包,否则无法正确执行。D e l p h i的V C L 5 0 . D P L包就是典型的例子。
    • 设计期包,这种类型的包包含了组件、属性和组件编辑器等在设计程序时需要的元素,可以用
    Component|Install Package命令将一个设计期的包安装到组件库中, D e l p h i的D C L * . B P L包就是这
    种类型的典型例子。这种类型的包在第2 1章“编写自定义组件”中有详细介绍。
    • 既是运行期又是设计期的包,这种包结合了上述两种类型。创建这种类型的包使得应用程序的
    开发和分发变得简单,但这种类型的包的效率不是很高,因为它在分发版本中携带太多支持设
    计的内容。
    • 既不是运行期又不是设计期的包,这种类型的包很少见,通常被其他包引用,而不是直接被应
    用程序引用。
      

  4.   

    包不一定用来安装组件。你可以把窗体等单元制作成包,然后加入到你的Project中。方法是点菜单Project——Option,在Packages页添加你自己的包
      

  5.   

    包的概念楼上的兄弟都说了。使用包的优点在于可以避开使用DLL时遇到内存管理和类标示的问题,最明显的表现就是,如果你使用DLL,静态调用则需要静态调用声明,动态调用则需要使用LoadLibrary之类的一系列API函数;而使用包,你可以想使用平常的单元一样使用包里面的单元,省去那些声明、函数调用,也不必关心内存方面的问题,Delphi会帮助你跟踪每一个单元中定义的类。