【问题标题】:Any tool to suggest unit reference automatically for Delphi 2010?有任何工具可以自动为 Delphi 2010 建议单位参考吗?
【发布时间】:2012-03-13 15:58:57
【问题描述】:

MS Visual Studio 有一个很棒的功能:当您输入引用缺少的标准类的代码时,它会自动建议在using 子句中添加单元。

是否有任何第三方工具可以为 Delphi 实现类似的功能?

我厌倦了在每个新单元中添加所有这些 SysUtils、Windows、消息等。

【问题讨论】:

  • +1 这是 VS 中的一个很棒的功能,而 RAD Studio 非常缺乏
  • +1 大卫所说的 + 从“路径”解析所有单元并将它们存储在 sqlite db 或其他轻量级的东西中应该不会太复杂,这样当你按下 CTRL+SPACE 并输入一些东西时这与已包含的单位无关,它应该显示诸如“声明类型|类|等”之类的选项。或“包括单元 X”,如果它找到您正在输入的内容...
  • 当您使用代码完成时,将在该单元不存在时添加该单元。所以这是可能的。
  • 在 Win7(可能是 Vista)中,您可以在控制面板中将 *.pas 文件添加到索引中。因此,在开始菜单搜索字符串中键入示例 WM_CLOSE 后,您将得到一些结果。当然它不是 delphi 的工具.. 但它很容易找到所需的单元;看截图:img204.imageshack.us/img204/7278/123qav.png

标签: delphi reference autocomplete delphi-2010 delphi-units


【解决方案1】:

如果包含引用的单元尚未在使用列表中,这就是我节省许多手动步骤的方式:

  • 右击带下划线(错误提示)的文本
  • 选择“重构 |寻找单位……”。

一个对话框将显示包含未知类型或符号的可用单元,然后单击鼠标将所选单元添加到当前文件的使用列表中。

【讨论】:

  • 我可以更改/扩展浏览路径吗?
  • 这在 XE5 更新 2 中因内存不足而爆炸 :-( 我的 RTL 函数方法:在标识符上按 F1 并复制并粘贴它们所在的单元。
  • 并不总是有效:找不到 Winapi.MMSystem 的 PlaySound 功能。
【解决方案2】:

CNPack Input Helper 可以推荐和自动完成单元(很抱歉提供另一个答案,但我无法评论其他)。

遗憾的是,CNPack 不会从代码输入位置自动添加单元,但您可以:

  • 从光标处复制一个单词(CNPack->Editor enchancements->Tabset/Button->Clipboard operations->Cut/copy token...)。
  • 最终在源文件 (grep) 中搜索该词以识别单元。
  • 使用 CNPack->Toggle Uses/Include Field (Ctrl+u) 并开始输入并使用 CNPack->Input Helper sugestion/autocompletion,或 IDE/GExperts/CNPack 使用单元未来
  • 返回代码编辑位置

【讨论】:

  • 我无法理解如何使用此输入助手来建议将哪些单元包含到 uses 子句中。你能解释一下你的场景吗?
【解决方案3】:

The JCL 包括“使用向导”。它监视提及“未声明的标识符”的编译错误,当它看到一个时,它会自动添加声明该标识符的单元。

JclUsesExpert.dpk 包仅适用于某些 Delphi 版本。不知道是不是因为插件在以后的版本中不起作用,还是有人忽略了将项目复制到更高版本的文件夹中。

【讨论】:

    【解决方案4】:

    这不是建议参考的工具,它只会清理不需要的单元子句。

    CnPack IDE Wizards 是一个优秀的 Delphi 开源插件。
    http://www.cnpack.org/index.php?lang=en

    我经常使用它的Uses cleaner 功能。 有一个菜单项:
    CnPack->Project Enhancements->Use Unit

    我认为这可以满足您的需求。

    【讨论】:

    • 不。它可以帮助管理现有的引用,但不能建议引用。
    • @hubalu,但这个问题是关于单位建议的。例如,当您键入 ShellExecute 时,您将收到建议的 ShellAPI 单位。
    【解决方案5】:

    或者你可以试试这个: http://www.epocalipse.com/products.htm

    单位专家

    “一个免费的 Delphi 插件,可让您快速打开单元并将它们添加到使用子句中。”

    我从未尝试过这个专家,但它看起来很有希望。

    【讨论】:

      【解决方案6】:

      rFindUnit IDE extension 是上面@mjn 建议的内置“重构|查找单元...”功能的增强版。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-05
        • 2013-06-05
        • 1970-01-01
        相关资源
        最近更新 更多