繁体   English   中英

IDE期望文件位于不同的位置

[英]IDE expecting file to be in different location

我在Delphi XE2版本16.0.4429.46931中有一个组件包,它们都是运行时和设计时包。 该软件包已存在一年多了,文件/文件夹结构始终相同。 我将所有单元保存在根目录下的专用Source文件夹中,以及同一根目录下Packages文件夹中的实际包。 所以这些包可以在\\Root\\Packages\\中找到,单位可以在\\Root\\Source\\

今天,在构建运行时包后,我正在通过提示和警告。 其中一个警告是:

[DCC Warning] Inno.TimeChart.pas(1): W1025 Unsupported language feature: 'class constructor'

它的自我警告不是让我担心的。 问题是当我双击此警告时,我从IDE收到一条错误消息:

IDE错误消息

我立即注意到的一件事是它不是在Source文件夹中查找,而是直接在Packages文件夹中查找。 不知何故,IDE期望该单元与包位于同一位置。 自从我在一年前创建软件包以来,我从未更改过任何库路径,文件位置或软件包结构。

该文件确实存在,但位于与其看起来不同的地方。 该文件从未保存在包含项目的文件夹中,实际上除了包项目本身之外没有其他任何内容保存在Packages文件夹中。 这一切都存在于Source文件夹中,但IDE似乎不这么认为。

为什么IDE会认为此文件位于不同的文件夹中? 当我双击它们时,与同一单元相关的所有其他提示和警告都可以正常工作,但不是这个。

编辑

我已经创建了一个新的测试包来解决这个问题。

Root\TestPackage.dpr
Root\Source\TestPackageUnit.pas

导致此编译器警告的特定代码段位于此类中:

type
  TMyComponent = class(TComponent)
  strict private
    class constructor Create;
  end;

当我使用Process Monitor进行编译时,我看到IDE正在30多个不同的位置搜索此文件(当然是失败的),它看起来像是在每个库路径中搜索,而不是在包中所说的那个位置。

我试过的事情

  1. 已验证DPRDPROJ文件之间的这些路径没有区别
  2. 安装了所有最新的更新和IDE FixPack(实际上给了我新的问题)
  3. 使用Process Monitor监视文件的访问权限
    1. 过滤器:进程名称等于BDS.exe ; 路径以TestPackageUnit.pas
    2. 结果:“NAME NOT FOUND” - >所需访问:通用读取处置:打开选项:同步IO非警报,非目录文件属性:N ShareMode:读取,写入AllocationSize:n / a
  4. 仅考虑设计时间,仅运行时间和设计时/运行时
  5. 尝试使用已注册和未注册的组件
  6. 尝试使用库路径中的目录而不是库路径中的目录
  7. 从库路径中删除了大约20个不必要的条目以使其更短
  8. 将目录移动到库路径的顶部
  9. 已验证没有与项目相关联的DOF文件(我认为是旧版本)
  10. 重新启动IDE和计算机次数
  11. 从项目中清除编译和临时文件,包括BPL和DCU文件
  12. strict private改为private甚至public

当delphi搜索路径列表太长时,我确实遇到了这样的问题。 我总是可以帮助自己将相关目录更多地移到前面,即在列表中。

检查文件是否尚未添加到项目文件(dpr或dpk)。 项目 - 查看源将显示该文件。

如果不是这种情况,请尝试在项目中的所有文件中搜索文件名,然后查看出现的情况。

在另一个网站上找到:

还有另一个QC可能与您的问题有关。 http://qc.embarcadero.com/wc/qcmain.aspx?d=87693

转到项目选项 - > Delphi编译器 - >输出C / C ++并在C / C ++输出文件生成下选择仅生成DCU。

Dalija Prasnikar

资料来源: http//codeverge.com/embarcadero.delphi.general

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM