问题标签 [uses-clause]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
5146 浏览

delphi - 如何在 Delphi 7 的“uses 子句”中识别和删除未使用的单元?

在我的一些非常大的项目中,这应该会大大减少可执行文件的大小。我相信还会有其他好处。

编辑:是否有一个实用程序可以扫描项目并自动删除多余的项目?我确实有 100 个项目,“自动删除”将是一等奖,尽管如果必须,我将在识别实用程序的帮助下采用手动方式。

0 投票
4 回答
8157 浏览

delphi - 与单元文件中的单元文件路径一起使用

我有问题。我会试着解释一下。

我有一个单元,它有一个类并且可能会有新的功能。

D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas 8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas

他们都有相同的类:IClass_1 = class

我使用此文件的不同版本的代码编号。

另一个单元文件 (UnitFile2.pas) 使用该单元文件 (UnitFile1.pas)。

此外,第二个单元文件 (UnitFile2.pas) 有不同的版本。

F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas 14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas

它们都具有相同的类: IClass_2 = class(IClass_1)

现在问题开始了;

“F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas”需要“D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas”

“14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas”需要“8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas”

但是文件名是相同的(我需要这样的系统。所以它们是相同的)。在单元文件中,delphi 不允许我这样写;

在文件 F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas; 在 'D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas' 中使用 UnitFile1;

我希望我能说出我的问题。我如何告诉编译器我想使用哪个单元文件及其路径?(我使用 Delphi-7)

0 投票
4 回答
1348 浏览

delphi - 如何查看哪个 Unit 使用另一个 Unit 的层次结构?(德尔福)

有一个大型项目,我需要查看每个文件在其 USES 子句中引用的 Units 层次结构。

前任。

我怎样才能看到这种依赖树?我记得在较新的 Delphi 版本之一中有一些类似的功能,但我不记得它叫什么。它可能是一个插件。

关于如何做到这一点的任何提示都会很棒。我开始编写自己的程序来做到这一点,但我已经浪费了大约 3 个小时,并且仍在研究 pas 文件的解析器。

0 投票
3 回答
1068 浏览

delphi - Delphi:在uses 子句中列出未使用的单元有哪些缺点?

我使用cnPack 使用清洁器,但总的来说,拥有无用单元的缺点是什么?

我知道其中一些:

1)当然,如果整个项目中从未使用过该单元,则会消耗无用的资源

2)代码洞察力将给出无用的结果

3)代码洞察会变慢

但是想象一个简单的例子:

  • 我有一个有 2 种形式的项目,我在其中一种形式中使用 StrUtils,但我在两种形式中都声明了 StrUtils ......在这种情况下,内存消耗是否有任何不利因素?
0 投票
1 回答
4371 浏览

delphi - 用途条款的差异

接口块中声明的单元和实现块中声明的单元有什么区别?

0 投票
1 回答
1805 浏览

delphi - 将一个单元添加到项目中所有单元的使用子句中?

我发现某些类型的代码清理和重构由于难以将单元添加到大型项目的使用子句而变得非常困难。

我想在单个项目中的所有 delphi .pas 单元的 interface-uses-clause 中添加一个单元,这意味着在 500 多个地方手动执行此操作。每次我重构一个巨型单元并将其从一个单元拆分为两个时,我可能可以使用“notepad++”之类的东西进行搜索和替换,将“MyOldUnit”更改为“MyOldUnit,MyNewUnit”,但有时,这样做并不安全. 它还遗漏了“MyOldUnit”是uses 子句中最后一件事的情况(“uses MyOldUnit;”)。

无论如何,在文件中搜索和替换是危险的事情。如果不存在这样的工具,我正在考虑使用 Castalia delphi 解析器编写一个。我检查了 GExperts、Castalia、ModelMakerCodeExplorer,但它们都没有办法将单元批量插入到项目中的所有使用子句中。我希望有一个工具可以做到这一点。

其次,在许多情况下,我将一个函数从一个不属于另一个单元的单元移动,但这意味着我需要将该单元添加到项目单元的 30%,而不是其他 70% 的单元已经存在添加。这意味着需要解析器方法,而不是正则表达式方法。

0 投票
1 回答
1478 浏览

delphi - IPPeerCommon 和 IPPeerClient

我正在查看 Embarcadero 提供的云示例CloudExplorer和 CloudUpload,IPPeerClient并且IPPeerClient是该uses条款下列出的单位。我试图弄清楚这些单元为/使用云做了什么,但似乎找不到关于它们的任何信息。

我尝试找到要通读它们的单位,但是尝试选择“查找声明”显示没有IPPeerCommon.pasor IPPeerClient.pas,而且我似乎无法在我的 Delphi XE3 文件夹中找到它。Google/Embarcadero 搜索没有返回任何链接,这让我觉得我错过了一些可能很明显的东西。

使用 IPPeerCommon 和 IPPeerClient 有什么作用,无论是对于云示例还是一般情况。如果实际上有这两个代码,那么我应该/应该在哪里找到它?

0 投票
3 回答
181 浏览

delphi - 如果没有找到定义,如何包含某些内容

我在我的设置类中使用以下代码来确定要使用什么。但是现在我遇到了一个问题,我忘记将正确的 .INC 文件复制到我的项目文件夹中,这给了我一个 AV,因为没有找到任何定义。我如何确保如果没有找到任何定义,则 U_SettingsConnIni 始终在使用部分

0 投票
1 回答
397 浏览

delphi - What does Delphi take as Circular Reference?

So, people. I have a aparently simple question. Does Delphi consider the next example as a Circular reference? I'm reaching Out of Memory Error with a similar set of code.

-

-

0 投票
1 回答
1018 浏览

delphi - 停止 Delphi 自动错误地添加单位

我正在将我们的项目从 XE7 更新到 XE8。目前他们仍需要使用 XE7,因此需要一些条件。比如ImageList换了单位,所以XE8中的Vcl.ImgList就是Syste.ImageList。为了使它适用于两个 Delphi 版本,uses 子句看起来像这样:

有时这很好用。然而,Delphi 经常会自动重新添加 System.Imagelist 单元,即使它已经存在,尽管是在有条件的情况下,例如

编译后,XE8 会报错。

a) Delphi 为什么要加单位?b)有人知道解决方法吗?