Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
1:04:2008, 14:18
|
|
Новенький ![]() Группа: Программист Сообщений: 14 Регистрация: 10:03:2008 Пользователь №: 15 761 Репутация: 0
|
Я пишу так:
КОД: C/C++ CODE void __fastcall TForm1::N4Click(TObject *Sender) 1. 2. { 3. RichEdit1->Font->Size=10; 4. int StartPos, Position=0, Endpos; 5. 6. AnsiString *SearchWords; 7. SearchWords = new AnsiString[5]; 8. SearchWords[0]=" while "; 9. SearchWords[2]="end"; 10. SearchWords[3]=" While "; 11. SearchWords[4]="End"; 12. for(int i=0;i<5;i++) 13. { 14. Position=0; 15. StartPos = 0; 16. 17. Endpos = RichEdit1->Text.Length(); 18. 19. while (Position!=-1) 20. { 21. Endpos = RichEdit1->Text.Length() - StartPos; 22. Position = RichEdit1->FindText(SearchWords[i], StartPos, Endpos, TSearchTypes()<< stMatchCase); 23. 24. RichEdit1->SelStart = Position; 25. RichEdit1->SelLength = SearchWords[i].Length(); 26. RichEdit1->SelAttributes->Style =RichEdit1->SelAttributes->Style<<fsBold; 27. RichEdit1->SelAttributes->Style =RichEdit1->SelAttributes->Style<<fsItalic; 28. StartPos = Position+SearchWords[i].Length(); 29. } 30. } 31. Как можно сделать так, чтобы эти слова выделяло только тогда, когда они сами? Обясняю: просто например в слове Sender слово end тоже выделяет, а мне это не нужно, можно ли как-то это исправить?А если написать в програме " end ", то в слове Sender слово end не выделяется, но когда написать так в тексте : end; , то слово end тоже не выделяется, а это нужно! Сообщение отредактировал European - 2:04:2008, 07:33
Причина редактирования: Установка тегов кода
|
|
Сообщение
#1
|
|
![]() |
|
|
2:04:2008, 07:59
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 816 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
Если нужна самопальная подсветка, то нужно использовать более сложные алгоритмы поиска ключевых слов, т.к. они должны располагаться между символами-"разделителями", такими как ";", пробел, конец строки, символы комментариев и т.д.
Если самому писать не нужно, то можно воспользоваться готовыми компонентами, например SynEdit |
|
Сообщение
#2
|
|
|
|
2:04:2008, 10:59
|
|
Новенький ![]() Группа: Программист Сообщений: 14 Регистрация: 10:03:2008 Пользователь №: 15 761 Репутация: 0
|
выкладите хотя бы кокой-то пример, бо у меня ну никак не получается! Заранее спасибо!
|
|
Сообщение
#3
|
|
|
|
2:04:2008, 11:18
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 816 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
|
|
Сообщение
#4
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 10:54 |