Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

StringVar + RichEdit.Selection+ StringVar2 [Delphi, Windows]


Solo ©   (2004-11-22 09:26:00) 

Добрый день!
Имеем RichEdit.
Выделяем в нем слово, или фразу, или абзац, нажимаем на кнопку - выделение должно замениться на то же самое, только с левой и с правой стороны добавляются теги (допустим, html-редактор). Привожу простейший код:

procedure TForm1.acTagExecute(Sender: PObj);
 var Old_s, // старая строка (заменяемая)
     New_s, // будущая строка (заменяющая)
     otk_tag, zak_tag : String; // Открывающий и закрывающий теги
begin
// Жирный шрифт (к примеру)
 otk_tag := ' '; //Это будет открывающий
 zak_tag := '
'; //А это - закрывающий
 Old_s := RichEdit1.Selection; //Инициализируем старую строку
 New_s := otk_tag + Old_s + zak_tag; // откр+выделение+закр
 RichEdit1.ReplaceSelection(New_s, true);//вставляем новую строку

end;


В результате выделение заменяется на "Открывающий тег"Само выделение - И... ВСЕ! Закрывающий тег не вставляется. Вернее, он вообще не прибавляется, и New_s у нас вместо ожидаемого otk_tag + Old_s + zak_tag равно otk_tag + Old_s + фигу с маслом.

RichEdit1.Selection имеет тип "String", значит, ни с каким чаром - пчаром заморочек тут нет. Если присваивать переменной Old_s какую нибудь строку от руки (Old_s := 'Какая-нить строка'), тогда все нормально...
Может, тип KolRichEdit.Selection имеет тип String, но другой какой нибудь, не совсем стринговый :)?


Solo   (2004-11-23 09:57:00) [1]

Спасибо, Андрей, Вы были правы. Селекшн - точно, нуль-терминальный... Все получилось! Какая досада...


Андрей   (2004-11-22 12:30:00) [2]

Похоже, RichEdit1.Selection заканчивается #0, а RichEdit1.ReplaceSelection(New_s, true) вставляет только до #0.

Попробуй проверять последний символ Old_S на #0 и отрезать его, если так.


Solo   (2004-11-22 09:32:00) [3]

Добавление: Черт, про теги я не подумал, что в хтмл-е они не отобразяться...
Но вы, думаю, поняли, что там должно быть. В принципе, разницы нет. Открывающая строка и закрывающая могут быть любыми. Главное, что закрывающая слетает...


Наверх

Титульная страница Поиск, карта сайта Написать письмо