| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > SynUniHighlighter и SynEdit > Программа выдает ошибку |
| Автор: SunGod 30.3.2007, 01:17 | ||
Здравствуйте. Я пишу под BCB 6 - поставил SynUniHighlighter и SynEdit, гружу хтмл таким нехитрым кодом(ради тестирования):
Какой бы хтмл не грузил вылетает с ошибкой "The highlighter seems to be in an infinite loop" - либо сразу, но чаще - при скроллинге. В чем дело?? Помогите плз, очень важно как можно скорее исправить....... |
| Автор: SunGod 31.3.2007, 18:30 | ||||
| Нашел я причину бага. Ошибка стабильно возникает если в документе есть пустая строка. Т.е. строка состоящая из символа возврата каретки! грубо говоря такое вот
Хайлайтер не пропустит, а вот такое (внимательно посмотрите, в строке есть пробел!) - запросто:
Поправьте плз, это ж не трудно просто поставить брейк если в строке возврат каретки! Я ща сам попробую, но т.к. структуры вашего кода не знаю, придется поискать где там обработка и что она из себя представляет......... |
| Автор: Seldon 1.4.2007, 12:59 |
| какую версию хайлайтера ты используешь? |
| Автор: Stss 2.4.2007, 14:07 |
| Такая же самая история, D7. Вот этот обработчик ошибки: if sToken = '' then begin sToken := fHighlighter.GetToken; if sToken = '' then raise Exception.Create('The highlighter seems to be in an infinite loop'); end; У меня эта же ошибка (ошибка ли?) высветилась и в версии UniHighlighter 1.8 beta, переставил UniHighlighter 2.0 beta4 Full. Помогите тупому, Христа ради - вижу, что идет проверка пустой строки, а как ликвидировать выскакивающую ошибку не знаю. |
| Автор: Stss 3.4.2007, 16:33 |
| Спасибо, попробую! Этот код из SynEdita |
| Автор: Seldon 3.4.2007, 22:33 | ||||
кстати, а попробуй в SynUni в файле SynUniHighlighter.pas найти метод TSynUniSyn.Next, а в нём код
и перед Exit написать
|
| Автор: Stss 4.4.2007, 13:16 |
| Пробовал комментить, пробовал FTokenPos:=Length(FLine); - не помогает ни то ни сё. Что выяснилось в результате: В редакторе вызываемом двойным кликом есть окно пробы "Sample text..." Ошибка выводится если в этом окне нет текста, т.е. цикл, обрабатывающий прорисовку наталкивается на пустую строку и считает это крайней наглостью. В моем случае (пока) помогло введение фразы "Как на шахте угольной нашли хрен отрубленный" в это проверочное окно. |
| Автор: Stss 4.4.2007, 13:50 |
| Нет, дохлый номер, пустая строка в SynEdite и сразу ошибка. |
| Автор: Seldon 4.4.2007, 17:19 |
| что такое "ошибка"? исключение? оно генерируецца строкой raise Exception.Create('The highlighter seems to be in an infinite loop'); если этой строки нет (i.e. она закоменчена) - оно генерировацца не должно. если всё же генерируецца - значит или есть другая такая строка, или исключение генерируецца самой средой (AV например) - в этом случае надо трассировкой искать место возникновения. |
| Автор: starxxx 5.6.2007, 02:00 |
| Так как, все таки, решить проблему с этой ошибкой? Я закомментировал строку вызывающую эксепшн в файле SynEdit.pas, ошибка, естественно перестала появляться, но легче не стало: в режиме дизайнера все работает, и выделение видно, но когда программу запускаешь - там никакого выделения нет вообще ... Просто обычный текст ... |