pas 文件中字符串的格式

发布于 2024-11-04 11:09:02 字数 429 浏览 4 评论 0原文

当字符串跨越多行时,有没有一种好的方法可以将字符串分配给变量?

做的原因是我有一些大的 SQL 语句(我想要在 pas 中),但是像这样

var
  sql : string;
begin
  sql := 'SELECT * ' +
         'FROM foo ' +
         'WHERE `this`=0';

复制并粘贴到终端/另一个程序中很烦人,因为我必须删除 ' 和 ' + 等。

这样 一种类似于...的方法

var
  sql : string;
begin
  sql := ""SELECT *
         FROM foo
         WHERE `this`=0"";

,可以用新行分配文本/字符串块,而无需将其连接起来。

Is there a nice way to assign a string to a variable when it spans many lines?

The reason for this is I have some large SQL statements (which I want in the pas) but it's annoying like this

var
  sql : string;
begin
  sql := 'SELECT * ' +
         'FROM foo ' +
         'WHERE `this`=0';

That is annoying to copy and paste into terminal / another program because I have to remove the ' and ' + etc.

Is there a way to so something like...

var
  sql : string;
begin
  sql := ""SELECT *
         FROM foo
         WHERE `this`=0"";

So some way to assign a block of text/string with new lines without having to concat it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

零崎曲识 2024-11-11 11:09:11

据我所知(至少不是开箱即用的)。无论如何,您可能想看看这个:

如何在不引用每一行的情况下分配多行字符串值?

Not that I know of (at least not out of the box). Anyway, you might want to take a look at this:

How to assign a multiline string value without quoting each line?

梦在深巷 2024-11-11 11:09:11

您可以将 SQL 保留在具有 TStrings 属性(如 TSQLQuery)的组件中,但我对较长/复杂语句的解决方案是保留“示例”副本作为源代码注释,它具有实际参数以使测试更容易,并保留两者版本同步。

You could keep the SQL in a component which has a TStrings property like TSQLQuery, but my solution for longer / complex statements is to keep an 'example' copy as a source code comment, which has actual parameters to make tests easier, and keep both version in sync.

相思碎 2024-11-11 11:09:11

如果您喜欢 C# 的做法(就像我一样),那么请不要忘记为此 QC 报告投票

http://qc.embarcadero.com/wc/qcmain.aspx?d=2012

它建议使您的示例如下所示:

var
  sql : string;
begin
  sql := @'SELECT *
         FROM foo
         WHERE `this`=0';

If you like the way C# does it (like I do), then don't forget to vote for this QC report:

http://qc.embarcadero.com/wc/qcmain.aspx?d=2012

It suggests to make your example look like this:

var
  sql : string;
begin
  sql := @'SELECT *
         FROM foo
         WHERE `this`=0';
幽梦紫曦~ 2024-11-11 11:09:11

如果你在Delphi中安装GExperts,IDE会在按下后自动插入一个'+ >输入<如果你在一个字符串内并且还没有关闭它。

下载链接:http://www.gexperts.org/download.html

If you install GExperts in Delphi, the IDE will automatically insert a '+ after pressing >enter< if you're inside a string and haven't closed it yet.

Download link: http://www.gexperts.org/download.html

傲鸠 2024-11-11 11:09:10

由于在 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');

As there is no way of expressing strings in this way in SQL, I normally use the RegEx search and replace available in the Delphi IDE to format strings in the required way.

  SELECT *
  FROM foo
  WHERE `this`=0

Regular expression replace dialog

This replaces any line with the line enclosed in quotes, followed by + sLineBreak +

  sql :=
      '  SELECT *' + sLineBreak +
      '  FROM foo' + sLineBreak +
      '  WHERE `this`=0' + sLineBreak +

I then just tidy up the last line:

  sql :=
      '  SELECT *' + sLineBreak +
      '  FROM foo' + sLineBreak +
      '  WHERE `this`=0';

Of course the same can be done with any preceding or trailing text, such as qry.SQL.Add('\0');

§普罗旺斯的薰衣草 2024-11-11 11:09:10

你的问题是:

Delphi 字符串文字可以跨多行吗?

答案是否定的。

Your question is:

Can a Delphi string literal span multiple lines?

The answer is no.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文