在跨越多行时,是否有一种很好的方法可以将字符串赋值给变量?
这样做的原因是我有一些大的SQL语句(我想在pas中)但是这样很烦人
var
sql : string;
begin
sql := 'SELECT * ' +
'FROM foo ' +
'WHERE `this`=0';
复制并粘贴到终端/其他程序中很烦人,因为我必须删除'和'+等。
有没有办法像... ...
var
sql : string;
begin
sql := ""SELECT *
FROM foo
WHERE `this`=0"";
所以有一些方法可以用新行分配一个文本/字符串块而不必连接它。
答案 0 :(得分:4)
由于无法在SQL中以这种方式表示字符串,我通常使用Delphi IDE中的RegEx搜索和替换来以所需方式格式化字符串。
SELECT *
FROM foo
WHERE `this`=0
这将使用引号括起来的行替换任何行,然后是+ sLineBreak +
sql :=
' SELECT *' + sLineBreak +
' FROM foo' + sLineBreak +
' WHERE `this`=0' + sLineBreak +
然后我只是整理了最后一行:
sql :=
' SELECT *' + sLineBreak +
' FROM foo' + sLineBreak +
' WHERE `this`=0';
当然,对于任何前置或尾随文本,例如qry.SQL.Add('\0');
答案 1 :(得分:3)
你的问题是:
Delphi字符串文字是否可以跨越多行?
答案是否定的。
答案 2 :(得分:1)
不是我所知道的(至少没有开箱即用)。无论如何,你可能想看看这个:
How to assign a multiline string value without quoting each line?
答案 3 :(得分:1)
您可以将SQL保存在具有TStrings属性(如TSQLQuery)的组件中,但我对更长/复杂语句的解决方案是将“示例”副本保留为源代码注释,其具有实际参数以使测试更容易,并保持两个版本同步。
答案 4 :(得分:1)
如果您喜欢C#的方式(就像我一样),那么不要忘记投票支持此质量控制报告:
http://qc.embarcadero.com/wc/qcmain.aspx?d=2012
它建议让你的例子看起来像这样:
var
sql : string;
begin
sql := @'SELECT *
FROM foo
WHERE `this`=0';
答案 5 :(得分:1)
如果在Delphi中安装GExperts,则在按下>输入<后,IDE将自动插入'+
。如果你在一个字符串中并且尚未关闭它。