840_____________________________________________Глава 14

AnsiString S, Delimiters;

Delimiters = "'";

forfint i = 1; i <= StrLen(S.c_str()); i++)
if(Is Delimiter(Delimiters,S,i))
S[i] = "";

заменит в строке S все символы одинарных кавычек на двойные кавычки.

В этой функции в строке Delimiters не обязательно должны быть именно раз-
делители. В нее могут быть занесены любые символы. Например, если приведен-
ный код изменить следующим образом:

AnsiString S, Delimiters;

Delimiters = "123456789";

forfint i = 1; i <= StrLen(S.c_str()); i++)
if(Is Delimiter(Delimiters,S,i))
S[i] -= 1;

то все символы цифр в строке, кроме 0, будут уменьшены на 1.

Функция StringReplace возвращает строку S с заменой подстроки OldPattern на
NewPattern. Если параметр Flags не включает флаг rfReplaceAll, то функция заме-
нят только первое вхождение подстроки OldPattern. Если параметр Flags включает
флаг rflgnoreCase, то операции выполняются без учета регистра. Например, оператор

SI = StringReplace(S, OldPattern, NewPattern,

TReplaceFlags О «rfReplaceAll) ;

поместит в строку S1 текст строки S с заменой в ней всех подстрок OldPattern на
NewPattern.

Функция WrapText разбивает заданный текст Line на строки. В качестве сим-
волов конца строки используются символы, заданные параметром BreakStr. Пара-
метр MaxCol задает максимальное количество символов в строке. Разбиение на
строки производится вставкой BreakStr после одного из символов, имеющихся в
множестве BreakChars. Вставка производится после того из символов в текущей
строке, который обеспечивает ее максимальную длину в пределах MaxCol. Если ни
одного символа из BreakChars не встретилось, длина строки может превысить
MaxCol. Например, операторы

TSysCharSet bchars;

bchars « ' ' « '.' « ',' « ';' « '+' « '-';

AnsiString S, SI;

SI = WrapText(S, "\n\r", bchars, 10);

обеспечивают запись в S1 текста S, разбитого на строки длиной до 10 символов,
причем разбиение проводится после пробелов и знаков пунктуации. Если в S запи-
сать текст: «Этот тест показывает разбиение на строки, в частности — на символах
+ и —.», то результат будет следующим:

"Этот тест "
"показывает "
"разбиение "
"на строки,"
" в "

"частности "
"- на "
"символах +"
" и - . "

Можно заметить, что вторая строка содержит 11 символов, включая пробел,
т.е. ее размер больше заданного.

Конечно, в этом примере указана очень маленькая длина строки и поэтому
разбиение выглядит не красиво. При нормальной для печати длине строк разбие-
ние получается лучше.