Поскольку никто так и не понял смысла моего комментария на гитхабе, поясню подробнее. Вот такой код никогда не компилировался ни в одном из известных мне Паскалей (хотя, конечно, я далеко не все его разновидности перепробовал):
s1 := 'abc' 'xyz';
s2 := 'abc'
'xyz';
Только что перепроверил это в TP 7.0 (под DosBox), Virtual Pascal 2.1 и Free Pascal 2.x/3.x. – везде ругается на неверный синтакис. Хотя… может быть в Delphi это работает? Нет возможности сейчас быстро проверить (сам Delphi почти никогда в жизни не использовал).
@Admin Обратите внимание: речь в исходном вопросе вообще не шла о строках вида'abc'#13#10'xyz' – это всегда и везде работало, просто Сергей был не в курсе, т.к. этот неочевидный момент тоже формально в справке у нас не описан, к сожалению.
Речь шла о неожиданной особенности: возможности конкатенации литерных строк, разделенных пробелами и/или написанными на разных строчках. Это уже не канонический синтаксис Паскаля. Подобная фича, конечно, существует в некоторых других ЯП (в основном, скриптовых), но там обычно в многострочных строках (multiline strings) не требуется явно писать коды CR/LF – они добавляются автоматом в каждой строчке, что куда проще и удобнее при необходимости впечатывать в код длинные тексты.
Поэтому данная возможность в целом хоть и не бесполезная, но в текущей реализации (если это вообще не случайный баг!) – довольно сомнительная, особенно разделение пробелами частей единой строки на одной строчке. Мне кажется, все это требует более критического осмысления и обсуждения.
Странный вопрос – в Справке и описать, т.к. никакого другого формального документа все равно нет и пока не предвидится. А откуда же еще начинающим брать информацию о правильном синтаксисе? Тем более о такой базовой вещи, как строки?
Ваш вариант можно посмотреть по ссылке, для этого я её привёл (ссылка идёт прямо к вашему сообщению). А в моём варианте я показал где это может быть полезно.
Ну, в моём примере между строками есть переносы строки и пробелы-отступы и они все не добавляются, так что это в моём примере показано.
Пример который там приведён - является примером того, что очень удобно в той конкатенации что сейчас есть.По вашему, писать это всё в 1 строчку будет лучше?
Нет, таки про это. Именно это он и сделал. посмотрите внимательно в код. То что все промежуточные переменные убирает - это особенность IL, в нём просто нет разницы между этим: