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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

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

Сообщение loginrl103 » 22.05.2009 02:06:23

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


все одинарные кавычки включительно.
проблема в том, что лазарус начинает ругаться на неверное выражение, так как считает вторую же кавычку (перед t) закрывающей. дополнительно ругается на {, так как считает символ { - началом комментария. КАК заэкранировать эти символы, чтобы он все кавычки, фигурные скобочки интепретировал как обычные символы?
loginrl103
незнакомец
 
Сообщения: 2
Зарегистрирован: 22.05.2009 01:58:22

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

Сообщение EmeraldMan » 22.05.2009 03:11:34

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

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

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

#13 - новая строка.
Так что ничего экранировать не надо, в данном случае кавычки будут просто текстом.
А вообще, любой символ можно представить его кодом, иногда так даже удобнее.
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород

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

Сообщение Павел Ишенин » 22.05.2009 07:00:54

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


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


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

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

Код: Выделить всё
s := '{Привет ' + LineEnding+
'Вася, ' + LineEnding +
'как дела?}';
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

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

Сообщение Дож » 22.05.2009 07:52:18

По поводу экранирования - внутри строки кавычки нужно удваивать:
Код: Выделить всё
st:='tbgrtk,lo '' t{[qwe]} lkjergler'
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

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

Сообщение EmeraldMan » 22.05.2009 12:27:19

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

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

Да, все верно. Именно так и надо.
В последнее время работал с OLE Word и там когда вставляешь #13#10, вставлялось сразу 2 пустых строки, вот и обходился одним "новая строка".
А вообще конечно надо #13#10.
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37

Рейтинг@Mail.ru