zoukankan      html  css  js  c++  java
  • Delphi (Library Path Browsing Path)

    首先要明白的一个概念是dcu文件

    *.dcu是*.pas的编译后单元文件(Delphi Compiled Unit), 编译器把它和库文件连接起来就构成了可执行文件*.exe 或*.dll等,相当于C中的obj文件。
    你所说的AgentObjects_TLB.dcu文件不一定在你的机器存在过它很可能是被编进
    *.bpl库文件中的,不是单独存在的,IDE环境下出错后有时不报*.bpl,而是报它的组成部分。

    编译时,源文件没有修改过的,就不会再次编译,直接调用dcu文件。所以有些第三方组件为了保护代码,就不提供pas文件,值提供dcu,也可以运行。
    但是如果和别的单元有依赖性,就需要重新编译了,需要pas文件。

    所以Library Path设置的就是编译器查找源文件或dcu编译文件的路径
    如果没有dcu,则编译pas文件生成之;如果有dcu,又不是build则直接拿dcu来连接
    (在注册表中Library Path的名称为search path; 而Project-option里面也有一个search path,很搞是吧, 那个search path是项目级别的搜索路径,而前一个是系统级别的)

    那么browsing path是设置什么的呢?
    它是设置代码浏览器查找源代码的路径, 不设这个路径不影响运行。
    但它还有另外一个目的:http://www.delphibbs.com/delphibbs/dispq.asp?lid=995504讲了这个。

    我们以raize组件为例
    Library Path为D:Program FilesBorlandComponentRaize.v4.02RC4LibDelphi7
      里面没有pas文件,只有dfm和dcu文件
    Browsing Path为:D:Program FilesBorlandComponentRaize.v4.02RC4Source
      里面有所有dfm,pas,dpk文件,但没有dcu

    很清楚这样做的目的是保护pas文件被意外修改后, 不会编译, 不会影响到dcu文件; 但又能自由浏览调试源文件。

    Raize的bin目录是存放bpl文件的,里面有两个设计时包, 这是IDE中Known packages用到的
    还有一个System32子目录,里面还有两个包,这是运行时包,复制到系统目录下。


    同样delphi自身的组织也是这样
    Lib目录里面都是dcu,没有源代码
    Imports目录里面是导入的空间的dcu
    Bin目录中都是bpl,dll,exe
    ProjectsBpl中都是自己编译的第三方组件生成的bpl
    Source目录中都是pas文件,分为多个目录组织

    所以如果要修改delphi源代码(当然不鼓励这样做), 先要把pas拷到Lib目录中,生成新的dcu,覆盖掉老的,如:
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=404099


    DELPHI怎么跟踪进VCL库文件里或者第三方控件的单元里?
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=2071839

    如何制作控件安装程序
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=2053286

     
     
  • 相关阅读:
    SQL语句大全
    SQL SERVER 用sql语句将一列数据拼接成一个字符串
    常用 SQl 语句大全
    巧用一条SQL语句实现其它进制到十进制转换
    sql 2005
    sql convert(varchar(10),getdate(),120)
    sqlserver 日期函数
    转:DBCC CHECKDB 数据库或表修复
    Linux下使用SFTP命令
    mySQL 教程 第7章 存储过程和函数
  • 原文地址:https://www.cnblogs.com/jijm123/p/10631141.html
Copyright © 2011-2022 走看看