Модераторы: Vitalik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа выдает ошибку, The highlighter seems to be in an infini 
:(
    Опции темы
SunGod
Дата 30.3.2007, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Здравствуйте. Я пишу под BCB 6 - поставил SynUniHighlighter и SynEdit,  гружу хтмл таким нехитрым кодом(ради тестирования):

 
Код

        if(OpenDialog->Execute())
        {
              SynEdit->Highlighter =  NULL;
              SynUni->MainRules->Clear();
              SynUni->LoadFromFile("C:\\html.hgl");
              SynEdit->Lines->LoadFromFile(OpenDialog->FileName);
              SynEdit->Highlighter = SynUni;
        }


Какой бы хтмл не грузил вылетает с ошибкой "The highlighter seems to be in an infinite loop" - либо сразу, но чаще - при скроллинге.
В чем дело?? Помогите плз, очень важно как можно скорее исправить.......
PM MAIL   Вверх
SunGod
Дата 31.3.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Нашел я причину бага. Ошибка стабильно возникает если в документе есть пустая строка.
Т.е. строка состоящая из символа возврата каретки!

грубо говоря такое вот

Код

<html>
<body>

<body>
</html>


Хайлайтер не пропустит, а вот такое (внимательно посмотрите, в строке есть пробел!) - запросто:

Код

<html>
<body>
   
<body>
</html>




Поправьте плз, это ж не трудно просто поставить брейк если в строке возврат каретки! Я ща сам попробую, но т.к. структуры вашего кода не знаю, придется поискать где там обработка и что она из себя представляет.........

PM MAIL   Вверх
Seldon
Дата 1.4.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



какую версию хайлайтера ты используешь?
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
Stss
Дата 2.4.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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.

Помогите тупому, Христа ради - вижу, что идет проверка пустой строки, а как ликвидировать выскакивающую ошибку не знаю.
 smile 

PM MAIL   Вверх
Seldon
Дата 2.4.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



Цитата(Stss @  2.4.2007,  14:07 Найти цитируемый пост)
Вот этот обработчик ошибки:            if sToken = '' then            begin              sToken := fHighlighter.GetToken;              if sToken = '' then                raise Exception.Create('The highlighter seems to be in an infinite loop');            end;
не нахожу такого кода ни в юнихайлайтере, ни в санэдите...

для начала можно попробовать закоментить строку 
Код

raise Exception.Create('The highlighter seems to be in an infinite loop');
не выход, но как костыль сойдёт
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
Stss
Дата 3.4.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.4.2007

Репутация: нет
Всего: нет



Спасибо, попробую!
Этот код из SynEdita
PM MAIL   Вверх
Seldon
Дата 3.4.2007, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



кстати, а попробуй в SynUni в файле SynUniHighlighter.pas найти метод TSynUniSyn.Next, а в нём код 
Код

if FPrEol then begin
  ....
  Exit;
end;

и перед Exit написать
Код

FTokenPos:=Length(FLine);

--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
Stss
Дата 4.4.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.4.2007

Репутация: нет
Всего: нет



Пробовал комментить, пробовал FTokenPos:=Length(FLine);
- не помогает ни то ни сё.
Что выяснилось в результате:
В редакторе вызываемом двойным кликом есть окно пробы "Sample text..."
Ошибка выводится если в этом окне нет текста, т.е. цикл, обрабатывающий прорисовку наталкивается на пустую строку и считает это крайней наглостью.
В моем случае (пока) помогло введение фразы "Как на шахте угольной нашли хрен отрубленный" в это проверочное окно.
PM MAIL   Вверх
Stss
Дата 4.4.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.4.2007

Репутация: нет
Всего: нет



Нет, дохлый номер, пустая строка в SynEdite и сразу ошибка.
PM MAIL   Вверх
Seldon
Дата 4.4.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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 - Программерский редактор
PM MAIL WWW   Вверх
starxxx
Дата 5.6.2007, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



Так как, все таки, решить проблему с этой ошибкой? Я закомментировал строку вызывающую эксепшн в файле SynEdit.pas, ошибка, естественно перестала появляться, но легче не стало: в режиме дизайнера все работает, и выделение видно, но когда программу запускаешь - там никакого выделения нет вообще ... Просто обычный текст ...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема »


 




[ Время генерации скрипта: 0.0895 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.