Delphi D10与D11并行安装时DPR路径混淆问题问询
Delphi 10.4与11.2共存下的VCL文件路径问题
我同时安装了Delphi 10.4和Delphi 11.2,因Delphi 11存在较多bug,暂时继续使用Delphi 10。但Delphi 10的VCL存在部分已在D11中修复的bug,因此我将D11的Vcl.ExtCtrls.pas复制到单独的VCL_FIX文件夹,并在Delphi 10的项目DPR中引入该文件:
program MyProgram; uses FastMM4, Forms, ... Vcl.ExtCtrls in 'C:\Packages\VCL_FIX\Alexandria_VCLs\Vcl.ExtCtrls.pas';
现在遇到两个问题:
- D10为何能访问D11的文件?我以为二者是独立安装的;
- 为何D11的原文件优先级更高?DPR中已明确指定VCL_FIX路径。
问题1解答
Delphi不同版本并非完全隔离,D10能访问D11文件的原因主要有几点:
- 安装D11时,可能修改了系统
PATH环境变量,或在注册表中添加了全局Delphi路径配置,D10启动时会加载这些全局设置; - 你可能在D10的IDE中手动将D11的源码路径添加到了项目搜索路径或库路径;
- Delphi版本间会共享
BDSCOMMONDIR这类公共环境变量,导致路径被交叉读取。
问题2解答
Ctrl+Click跳转文件的逻辑优先遵循IDE的路径配置,而非DPR中指定的本地路径:
- Delphi IDE处理单元跳转时,会先在项目搜索路径、库路径中查找单元,只有这些路径找不到时,才会参考DPR里的指定路径;
- 你的D10 IDE搜索路径中大概率包含了D11的
source\vcl目录,所以IDE优先匹配到该路径下的Vcl.ExtCtrls.pas,忽略了DPR里的自定义路径; - 同名单元情况下,IDE搜索路径中的文件优先级高于DPR显式指定的路径。
解决办法
- 打开D10 IDE,进入工具→选项→语言→Delphi→库,移除所有指向D11安装目录的路径;
- 针对当前项目,进入项目→选项→Delphi编译器→搜索路径,将
VCL_FIX路径移至最顶部,确保IDE优先搜索该目录; - 清理IDE缓存:删除项目目录下的
.dproj.local、.identcache文件,以及IDE缓存目录(D10.4通常在Documents\Embarcadero\Studio\21.0\Cache),重启IDE。
内容的提问来源于stack exchange,提问作者Error - CPU Not Found
相关产品推荐
相关产品推荐

