| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > RichEdit замена текста |
| Автор: mgf 7.6.2009, 00:30 | ||||
| Помогите пожалуйста решить вопрос с Richedit. В нем забит текст, который загружается из текстового файла. Например: *Вопрос. Ответ: ...* Задача такова, что нужно заменить троеточие на слово, побуквенно, которое будет вводится побуквенно в edit. У меня пока только стирает троеточие и оставляет пустоту...слово вместо троеточия не вводится. помогите, исправить пожалуйста. Вот все, что у меня написано из кода
|
| Автор: Данкинг 7.6.2009, 00:42 |
Может быть, тебе j нужно увеличивать, а не i? В любом случае, i - это переменная цикла, зачем её трогать-то. |
| Автор: Chydik 7.6.2009, 02:43 | ||||||
Во первых строка начинается не с 0 а с 1:
Во вторых ты проходинся по всему тексту заменяя все . (т.е после ввода одного символа в edit каждую . после первой ты заменяешь на j=j+1, хотя данного символа у тебя нет) потому я и использовал Break; В третих j вынес из Edit1Change т.к. она всегда была бы =1 В четвертых в данном случае есть недостаток: Если взять пример *Вопрос. Ответ: ...*, то первой будет заменена . после Вопрос;
|
| Автор: HeliX 7.6.2009, 09:04 | ||
| Согласен с Chydik, только хочется кое-что дополнить. 1. Зачем использовать OnChange, проще распарсить текст сразу после загрузки, либо отключить редактирование рича. Если конечно не предполагается, что пользователь сам может менять текст рича и вводить эти самые "...". Но в этом случае лучше тоже не использовать OnChange, т.к. ничего кроме "тормозов" это не даст. В этом случае лучше добавить отдельное действие на другой контрол, или в OnChange устанавливать флаг, а потом в таймере каждые Н-секунд парсить текст если он был изменен(флаг). Все же будет получше чем паксить при вводе/удалении каждого нового символа. 2. Не вижу смысла в вашем случае что-то изобретать (я про цикл парсинга текста), есть такие функции как pos,delete и Insert. Вот собственно как выглядит вся замена:
|
| Автор: mgf 7.6.2009, 13:40 |
| попробовала сделать по предложению Chydik, но он все равно у меня стирает только эти три точки, ничего не добавляя |
| Автор: Keeper89 7.6.2009, 14:06 | ||
| mgf, я уже отвечал Вам на тот же самый вопрос: http://forum.vingrad.ru/index.php?showtopic=258447&view=findpost&p=1863195. Зачем по сто раз одно и то же спрашивать? Вот тот же код, вопрос берется теперь из файла:
Прикрепляю измененный проект. |
| Автор: mgf 7.6.2009, 15:01 |
| извиняюсь...не видела этого... Благодарю за помощь, проект скачала теперь! |
| Автор: Keeper89 7.6.2009, 16:06 |
Пожалуйста ;) |