![]() |
Модераторы: Vitalik |
![]() ![]() ![]() |
|
SunGod |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 29.3.2007 Репутация: нет Всего: нет |
Здравствуйте. Я пишу под BCB 6 - поставил SynUniHighlighter и SynEdit, гружу хтмл таким нехитрым кодом(ради тестирования):
Какой бы хтмл не грузил вылетает с ошибкой "The highlighter seems to be in an infinite loop" - либо сразу, но чаще - при скроллинге. В чем дело?? Помогите плз, очень важно как можно скорее исправить....... |
|||
|
||||
SunGod |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 29.3.2007 Репутация: нет Всего: нет |
Нашел я причину бага. Ошибка стабильно возникает если в документе есть пустая строка.
Т.е. строка состоящая из символа возврата каретки! грубо говоря такое вот
Хайлайтер не пропустит, а вот такое (внимательно посмотрите, в строке есть пробел!) - запросто:
Поправьте плз, это ж не трудно просто поставить брейк если в строке возврат каретки! Я ща сам попробую, но т.к. структуры вашего кода не знаю, придется поискать где там обработка и что она из себя представляет......... |
||||
|
|||||
Seldon |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 23.12.2005 Где: Minsk Репутация: 2 Всего: 2 |
какую версию хайлайтера ты используешь?
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор |
|||
|
||||
Stss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 2.4.2007 Репутация: нет Всего: нет |
Такая же самая история, 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. Помогите тупому, Христа ради - вижу, что идет проверка пустой строки, а как ликвидировать выскакивающую ошибку не знаю. ![]() |
|||
|
||||
Seldon |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 23.12.2005 Где: Minsk Репутация: 2 Всего: 2 |
не нахожу такого кода ни в юнихайлайтере, ни в санэдите... для начала можно попробовать закоментить строку
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор |
|||
|
||||
Stss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 2.4.2007 Репутация: нет Всего: нет |
Спасибо, попробую!
Этот код из SynEdita |
|||
|
||||
Seldon |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 23.12.2005 Где: Minsk Репутация: 2 Всего: 2 |
кстати, а попробуй в SynUni в файле SynUniHighlighter.pas найти метод TSynUniSyn.Next, а в нём код
и перед Exit написать
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор |
||||
|
|||||
Stss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 2.4.2007 Репутация: нет Всего: нет |
Пробовал комментить, пробовал FTokenPos:=Length(FLine);
- не помогает ни то ни сё. Что выяснилось в результате: В редакторе вызываемом двойным кликом есть окно пробы "Sample text..." Ошибка выводится если в этом окне нет текста, т.е. цикл, обрабатывающий прорисовку наталкивается на пустую строку и считает это крайней наглостью. В моем случае (пока) помогло введение фразы "Как на шахте угольной нашли хрен отрубленный" в это проверочное окно. |
|||
|
||||
Stss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 2.4.2007 Репутация: нет Всего: нет |
Нет, дохлый номер, пустая строка в SynEdite и сразу ошибка.
|
|||
|
||||
Seldon |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 23.12.2005 Где: Minsk Репутация: 2 Всего: 2 |
что такое "ошибка"? исключение? оно генерируецца строкой raise Exception.Create('The highlighter seems to be in an infinite loop');
если этой строки нет (i.e. она закоменчена) - оно генерировацца не должно. если всё же генерируецца - значит или есть другая такая строка, или исключение генерируецца самой средой (AV например) - в этом случае надо трассировкой искать место возникновения. --------------------
MiBEditor v2.Alpha 10 - Программерский редактор |
|||
|
||||
starxxx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 5.6.2007 Репутация: нет Всего: нет |
Так как, все таки, решить проблему с этой ошибкой? Я закомментировал строку вызывающую эксепшн в файле SynEdit.pas, ошибка, естественно перестала появляться, но легче не стало: в режиме дизайнера все работает, и выделение видно, но когда программу запускаешь - там никакого выделения нет вообще ... Просто обычный текст ...
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |