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 Files\Borland\Component\Raize.v4.02\RC4\Lib\Delphi7
里面没有pas文件,只有dfm和dcu文件
Browsing Path为:D:\Program Files\Borland\Component\Raize.v4.02\RC4\Source
里面有所有dfm,pas,dpk文件,但没有dcu
很清楚这样做的目的是保护pas文件被意外修改后, 不会编译, 不会影响到dcu文件; 但又能自由浏览调试源文件。
Raize的bin目录是存放bpl文件的,里面有两个设计时包, 这是IDE中Known packages用到的
还有一个System32子目录,里面还有两个包,这是运行时包,复制到系统目录下。
同样delphi自身的组织也是这样
Lib目录里面都是dcu,没有源代码
Imports目录里面是导入的空间的dcu
Bin目录中都是bpl,dll,exe
Projects\Bpl中都是自己编译的第三方组件生成的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
Delphi (Library Path Browsing Path)的更多相关文章
- os.path.exists(path) 和 os.path.lexists(path) 的区别
使用os.path.exists()方法可以直接判断文件是否存在.代码如下:>>> import os>>> os.path.exists(r'C:\1.TXT') ...
- os.path.isdir(path)异常
Window 10家庭中文版,Python 3.6.4, 当一个路径以多个斜杠(/)或反斜杠字符(\\)结尾时,os.path.isdir(path)函数仍然将它们判断为目录: >>> ...
- InstallShield Build Error -1014: Cannot rename directory <PATH> to <PATH>\folder.Bak.
InstallSheild执行Build结果错误: 错误详细信息: Cannot rename directory <PATH> to <PATH>\folder.Bak. W ...
- os.path.join合并 os.path.dirname返回上一级目录 os.path.exists(path) os.stat('path/filename')获取文件/目录信息
import os str1 = "grsdgfd" str2 = "wddf" str3 = "gddgs" # print(str1 + ...
- os模块 os.stat('path/filename') os.path.dirname(path) os.path.exists(path) os.path.join(path1[, path2[, ...]])
提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于 ...
- difference in physical path, root path, virutal path, relative virtual path, application path and aboslute path?
http://stackoverflow.com/questions/13869817/difference-in-physical-path-root-path-virutal-path-relat ...
- maven library has broken path和pom jar包导入失败
今天在打开项目的时候,在pom文件添加新的依赖文件发现很多jar都标红,显示不存在,自己查了一上午各种尝试,总结了以下的解决方法. 首先你打开File-Project Structrue-Module ...
- delphi win7 and high path
Close DelphiLocate bordbk120N.dll (C:\Program Files (x86)\CodeGear\RAD Studio\6.0\bin)Make a backup ...
- Project 'king.commons' is missing required library: 'lib/plweb.jar' Build path Build Path Problem
问题描述:之前在项目里引用一个jar 包,后来不用了删掉 ,但是没有删干净,然后报以下错误. 解决方案: 1.删除libraries 2.找到该项目下的 .classpath 文件,用记事本打开 ,删 ...
随机推荐
- 重置 Mac 上的 NVRAM 或 PRAM
https://support.apple.com/zh-cn/HT204063 如果 Mac 出现了与 NVRAM 或 PRAM 中储存的设置有关的问题,那么进行重置可能会有帮助. NVRAM( ...
- 【LOJ 3049】「十二省联考 2019」字符串问题
这个D1T2绝对有毒... 首先我们构造一把反串的后缀自动机. 然后我们就需要找到每一个子串在SAM上的节点. 这个可以通过扫描线+树上倍增处理. 首先我们把所有的子串按照左端点排序, 然后从右往左扫 ...
- Java IO(三)——字节流
一.流类 Java的流式输入/输出是建立在四个抽象类的基础上的:InputStream.OutputStream.Reader.Writer.它们用来创建具体的流式子类.尽管程序通过具体子类执行输入/ ...
- Feature Extractor[content]
0. AlexNet 1. VGG VGG网络相对来说,结构简单,通俗易懂,作者通过分析2013年imagenet的比赛的最好模型,并发现感受野还是小的好,然后再加上<network in ne ...
- ML.NET 示例:推荐之One Class 矩阵分解
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- MyBatis + MySQL返回插入成功后的主键id
这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增i ...
- Python中Socket粘包问题的解决
服务器端 import socket import subprocess import struct server = socket.socket() ip_port = ("192.168 ...
- python2中reload(sys)后设置编码
python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't deco ...
- 【评分】Beta 答辩总结
[评分]Beta 答辩总结 总结 按时交 - 有分 晚交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 倒扣本次作业分数 由于前期不够重视,到beta评分才发现有5组的代码提交仅由一人&qu ...
- mysql之整合ssm多数据源配置
一,基于SSM框架的多数据源配置 1.创建DynamicDataSourceHolder用于持有当前线程中使用的数据源标识 public class DynamicDataSourceHolder { ...