Delphi格式代码连接字符串作为TStringList add
在一个大项目的许多地方,SQL语句被添加为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 ' + '
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的解决方案或宏可能是一条出路。