Delphi 是否可以将单元名称添加到不同单元中对函数的每次调用中?
我经常遇到的一个问题是,我将在我的uses子句中包含“Windows”,然后我将为一些特定调用添加“JwaWinBase” 但是,“Windows”单元中的许多函数与JwaWinBase中的函数相同,我开始在我的主单元中到处出现错误,直到我通过预先挂起正确的单元名称修复所有调用,如下所示: 旧版:Delphi 是否可以将单元名称添加到不同单元中对函数的每次调用中?,delphi,Delphi,我经常遇到的一个问题是,我将在我的uses子句中包含“Windows”,然后我将为一些特定调用添加“JwaWinBase” 但是,“Windows”单元中的许多函数与JwaWinBase中的函数相同,我开始在我的主单元中到处出现错误,直到我通过预先挂起正确的单元名称修复所有调用,如下所示: 旧版: CreateProcessAsUser(…) 新建: CreateProcessAsUser(…) JwaWinBase.CreateProcessAsUser(…) 我想知道的是,是否有一种
- CreateProcessAsUser(…)
- CreateProcessAsUser(…)
- JwaWinBase.CreateProcessAsUser(…)
我目前正在使用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中的各种函数,并为它们制作安全的模板
否则,我认为这是在逐案的基础上进行搜索和替换 我不知道。谢谢你的信息!