我经常遇到的一个问题是,我将在我的uses子句中包含' Windows ',然后我会为某些人添加' JwaWinBase '特定电话。
然而,'Windows'单元中的许多功能与JwaWinBase中的相同,我开始在我的主单元中出现错误,直到我通过预先挂起正确的单元来修复所有呼叫名字,像这样:
旧:
新:
我想知道的是,是否有办法让单位名称自动预先设定为每次调用另一个单位的功能?这样,在我将JwaWinBase添加到我的uses子句之前,我可以将'Windows'单元名称预先设置为任何函数调用。然后添加JwaWinBase不会给我任何错误。
我目前正在使用Delphi 2007。
答案 0 :(得分:8)
没有。
但是,函数调用的处理顺序与uses子句中的相反,所以如果你有这个:
uses
Windows, JwaWinBase;
...默认会调用Jwa函数。但是,如果你颠倒它们:
uses
JwaWinBase, Windows;
...它应默认调用Windows函数,您可以根据需要为Jwa函数添加前提。
答案 1 :(得分:3)
如果您确实需要基于每个例程的解析,您可以尝试使用内联转发器:
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;
在实施部分的开头(完全未经测试: - ))。
答案 2 :(得分:2)
也许只需在uses子句中切换两个单元的顺序就足够了。
答案 3 :(得分:2)
如果使用CodeRush(D7及之前版本)或Castalia等编辑器,甚至使用D2009的模板功能,您可以创建扩展到所需内容的模板。然后,您可以在使用部分中保留Windows,jwaWinBase顺序。您可以将jcpau设置为扩展为jwaWinBase.CreateProcessAsUser,同时cpau扩展为CreateProcessAsUser或Windows.CreateProcessAsUser,具体取决于您的首选项。您只需要完成jwaWinBase中的各种功能,并为它们制作模板以确保安全。
否则,我认为它是根据具体情况进行搜索和替换的。