Delphi 是否可以将单元名称添加到不同单元中对函数的每次调用中?

Delphi 是否可以将单元名称添加到不同单元中对函数的每次调用中?,delphi,Delphi,我经常遇到的一个问题是,我将在我的uses子句中包含“Windows”,然后我将为一些特定调用添加“JwaWinBase” 但是,“Windows”单元中的许多函数与JwaWinBase中的函数相同,我开始在我的主单元中到处出现错误,直到我通过预先挂起正确的单元名称修复所有调用,如下所示: 旧版: CreateProcessAsUser(…) 新建: CreateProcessAsUser(…) JwaWinBase.CreateProcessAsUser(…) 我想知道的是,是否有一种

我经常遇到的一个问题是,我将在我的uses子句中包含“Windows”,然后我将为一些特定调用添加“JwaWinBase

但是,“Windows”单元中的许多函数与JwaWinBase中的函数相同,我开始在我的主单元中到处出现错误,直到我通过预先挂起正确的单元名称修复所有调用,如下所示:

旧版:

  • CreateProcessAsUser(…)
新建:

  • CreateProcessAsUser(…)
  • JwaWinBase.CreateProcessAsUser(…)
我想知道的是,是否有一种方法可以让单元名自动预先挂起到对另一个单元中的函数的每次调用?这样,在我将JwaWinBase添加到uses子句之前,我可以将“Windows”单元名称预先挂起到任何函数调用。那么添加JwaWinBase不会给我任何错误


我目前正在使用Delphi2007。

也许在uses子句中切换两个单元的顺序就足够了。

没有

但是,函数调用的处理顺序与uses子句中的相反,因此如果您有以下情况:

uses
  Windows, JwaWinBase;
。。。默认情况下,它将调用Jwa函数。但是,如果您将其反转:

uses
  JwaWinBase, Windows;

。。。默认情况下,它应该调用Windows函数,您可以根据需要对Jwa函数进行排序。

如果您确实需要每个例程的解析,您可以尝试使用内联转发器:

procedure Blah; inline;
begin
  Windows.Blah;
end;

procedure Blubb; inline;
begin
  JwaWinBase.Blubb;
end;

// later:
procedure UseThem;
begin
  Blah; // calls Windows.Blah
  Blubb; // calls JwaWinBase.Blubb
end;

在“实现”部分的开头(完全未测试:-)。

如果您使用CodeRush(D7及之前版本)或Castalia等编辑器,甚至D2009的模板功能,您可以创建模板,在输入模板时将其展开。然后您可以在uses部分保持Windows、jwaWinBase的顺序。您可以将jcpau设置为扩展到jwaWinBase.CreateProcessAsUser,而cpau则根据您的首选项扩展到CreateProcessAsUser或Windows.CreateProcessAsUser。您只需浏览jwaWinBase中的各种函数,并为它们制作安全的模板


否则,我认为这是在逐案的基础上进行搜索和替换

我不知道。谢谢你的信息!