Форматирование строки в файле pas - PullRequest
3 голосов
/ 01 мая 2011

Есть ли хороший способ присвоить строку переменной, если она занимает много строк?

Причина этого в том, что у меня есть несколько больших операторов SQL (которые я хочу в прошлом), но это раздражает, как это

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

Это раздражает копировать и вставлять в терминал / другую программу, потому что я должен удалить 'и' + и т. Д.

Есть ли способ так что-то вроде ...

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

Так что какой-то способ назначить блок текста / строки с новыми строками без необходимости конкаталировать его.

Ответы [ 6 ]

4 голосов
/ 01 мая 2011

Поскольку в SQL нет способа выразить строки таким способом, я обычно использую поиск и замену RegEx, доступные в Delphi IDE, для форматирования строк требуемым способом.

  SELECT *
  FROM foo
  WHERE `this`=0

Regular expression replace dialog

При этом любая строка заменяется строкой, заключенной в кавычки, за которой следует + sLineBreak +

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

Затем я просто убираю последнюю строку:

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

Конечно, то же самое можно сделать с любым предшествующим или завершающим текстом, таким как qry.SQL.Add('\0');

3 голосов
/ 01 мая 2011

Ваш вопрос:

Может ли строковый литерал Delphi занимать несколько строк?

Ответ - нет.

1 голос
/ 02 мая 2011

Если вы установите GExperts в Delphi, IDE автоматически вставит '+ после нажатия> enter <, если вы внутри строки и еще не закрыли ее.* Ссылка для скачивания: <a href="http://www.gexperts.org/download.html" rel="nofollow">http://www.gexperts.org/download.html

1 голос
/ 01 мая 2011

Если вам нравится, как это делает C # (как и я), не забудьте проголосовать за этот отчет о КК :

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

Он предлагает сделать ваш пример похожим на:

var
  sql : string;
begin
  sql := @'SELECT *
         FROM foo
         WHERE `this`=0';
1 голос
/ 01 мая 2011

Вы можете хранить SQL в компоненте, который имеет свойство TStrings, например TSQLQuery, но мое решение для более длинных / сложных операторов состоит в том, чтобы сохранить копию «примера» в виде комментария к исходному коду, который имеет фактические параметры, чтобы упростить тестирование,и синхронизируйте обе версии.

1 голос
/ 01 мая 2011

Не то, что я знаю (по крайней мере, не из коробки). В любом случае, вы можете взглянуть на это:

Как назначить многострочное строковое значение без кавычек в каждой строке?

...