delphi – 将单元添加到项目中所有单元的uses子句中?

我发现某些类型的代码清理和重构由于难以在大型项目的uses-clause中添加单元而变得非常困难.

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

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

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

解决方法

因为我们都编写代码,我们肯定会在其他项目中使用.如果将接口部件从一个单元移动到另一个单元,则会破坏您的项目.与旧单位和新单位相同.

但是你可以在不破坏项目的情况下进行重构.只需将部件(单元,类,方法,过程)标记为已弃用.
您的代码正在运行,但编译器会向您发出警告.

这是一个将过程从一个单元移动到另一个单元的示例:

unit Foo;

interface

procedure FooProc; deprecated; // new location in unit FooNew

implementation

uses
  FooNew;

procedure FooProc;
begin
  FooNew.FooProc;
end;

end.

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...