Delphi格式代码连接字符串作为TStringList add

Delphi格式代码连接字符串作为TStringList add,delphi,delphi-xe,code-formatting,Delphi,Delphi Xe,Code Formatting,在一个大项目的许多地方,SQL语句被添加为 table.SQL.Add(' ' + ' select tableA.Field1, ' + ' tableA.Field2 Field2, ' + ' tableA.Field3, ' + ' tableA.Field1 ' + ' from tableA_!Version tableA left outer join tableB_00 tableB ' + '

在一个大项目的许多地方,SQL语句被添加为

table.SQL.Add(' '
      + ' select tableA.Field1, '
      + ' tableA.Field2 Field2, '      
      + ' tableA.Field3, '
      + ' tableA.Field1 '
      + ' from tableA_!Version tableA left outer join tableB_00 tableB '
      + ' on tableB.Field1ID = :ID '
      + ' and          tableB.Nr = :Nr '
      + ' and tableA.Field12 = tableB.InhaltNummer '
      + ' where tableA.Field233 = 1 '
      + ' order by tableA.Field1 '
);
我想选择这段代码并将其更改为

with     table.SQL do
 begin    
          Add('select tableA.Field1,');
          Add('tableA.Field2 Field2,');      
          Add('tableA.Field3,');
          Add('tableA.Field1');
          Add('from tableA_!Version tableA left outer join tableB_00 tableB');
          Add('on tableB.Field1ID = :ID');
          Add('and          tableB.Nr = :Nr');
          Add('and tableA.Field12 = tableB.InhaltNummer');
          Add('where tableA.Field233 = 1');
          Add('order by tableA.Field1');
end;          
因为后来SQL语句是通过使用直接行号来更改的,例如

table.SQL.Lines[5] := 'something'

我在查看Delphi的重构菜单、GExpert或CNPack功能,但没有发现有用的东西。有什么功能可以帮助我吗?

Castalia for Delphi完全公开:我是创建者,有两个工具可以做到这一点。请在此处阅读它们:

正则表达式文本替换。或者录制并回放一个宏,但这需要大量的点击:我想到了正则表达式,但我认为它可以用另一种方式制作。在代码编辑器中,使用普通替换和正则表达式替换可以相当容易地做到这一点。将+替换为Add的第一个纯文本。第二种方法使用正则表达式;搜索“$”,并替换为;。您需要跳过第一个匹配项,即行末尾的匹配项与原始的Add“”匹配,或者允许它;无论哪种方式,你都必须在之后修正这一行。如果在执行搜索/替换之前先选择文本块,则可以使用“selected text”选项并执行全部替换。我认为存在类似的情况。我一直在尝试构建一个正则表达式来完成整个工作,但似乎比我想象的要难。到目前为止,我已经找到了,它匹配了所有需要的内容,但无法输出正确的结果,因为正则表达式引擎没有保留重复组的所有匹配项。例外情况是.NET引擎引用:。。。我不知道如何进一步解决这个问题,所以我相信Ken的解决方案或宏可能是一条出路。