Страница 1 из 1

как экранировать символы.

СообщениеДобавлено: 22.05.2009 02:06:23
loginrl103
Лазарус 0.9.26.
переменной строкового типа string надо присвоить значение типа. пишу нечто
Код: Выделить всё
st:='
' t
{
[
qwe
]
}'
'


все одинарные кавычки включительно.
проблема в том, что лазарус начинает ругаться на неверное выражение, так как считает вторую же кавычку (перед t) закрывающей. дополнительно ругается на {, так как считает символ { - началом комментария. КАК заэкранировать эти символы, чтобы он все кавычки, фигурные скобочки интепретировал как обычные символы?

Re: как экранировать символы.

СообщениеДобавлено: 22.05.2009 03:11:34
EmeraldMan
Делфи бы тоже ругался. Я так понимаю начинающий программист?
Вот есть например фраза, состоящая из трех строк:
"{Привет
Вася,
как дела?}"

по вашему код имел бы вид:
Код: Выделить всё
s := 'Привет
Вася,
как дела?'

Это совсем не правильная запись. Видите ли в чем дело - кавычки не распространяются на несколько строк в редакторе, в каждой строке надо заключать в кавычки текстовые значения, а потом соединять их.
Правильная запись:
Код: Выделить всё
s := '{Привет ' + #13+
'Вася, '+#13+
'как дела?}';

#13 - новая строка.
Так что ничего экранировать не надо, в данном случае кавычки будут просто текстом.
А вообще, любой символ можно представить его кодом, иногда так даже удобнее.

Re: как экранировать символы.

СообщениеДобавлено: 22.05.2009 07:00:54
Павел Ишенин
Следующий код приведет к нескольким операциям над строками:
Код: Выделить всё
s := '{Привет ' + #13+
'Вася, '+#13+
'как дела?}';


А такой будет работать без ненужных дополнительных операций:
Код: Выделить всё
s := '{Привет '#13'Вася, '#13'как дела?}';


Правда #13 для Windows не подойдет - там надо #13#10.

Если же нужен кросс-платформенный код, то

Код: Выделить всё
s := '{Привет ' + LineEnding+
'Вася, ' + LineEnding +
'как дела?}';

Re: как экранировать символы.

СообщениеДобавлено: 22.05.2009 07:52:18
Дож
По поводу экранирования - внутри строки кавычки нужно удваивать:
Код: Выделить всё
st:='tbgrtk,lo '' t{[qwe]} lkjergler'

Re: как экранировать символы.

СообщениеДобавлено: 22.05.2009 12:27:19
EmeraldMan
Павел Ишенин писал(а):А такой будет работать без ненужных дополнительных операций:
КОД: ВЫДЕЛИТЬ ВСЁ
s := '{Привет '#13'Вася, '#13'как дела?}';

Безусловно, просто в некоторых случаях в одну строку не лучший вариант, я хотел показать как на несколько строк можно.
Павел Ишенин писал(а):Правда #13 для Windows не подойдет - там надо #13#10.

Да, все верно. Именно так и надо.
В последнее время работал с OLE Word и там когда вставляешь #13#10, вставлялось сразу 2 пустых строки, вот и обходился одним "новая строка".
А вообще конечно надо #13#10.