Re[13]: CRichEditCtrl + подчеркивание
От: Carc Россия https://vk.com/gosha_mazov
Дата: 06.06.17 07:13
Оценка: +1
Здравствуйте, Vlads, Вы писали:

V>Carc, в вашем AmlPages я не вижу, чтобы слова с ошибками подчеркивались. Или это было реализовано в старых плагинах?

Это в старом плагине было "Aml Speller", вот он http://www.amlpages.com/Rus/plugins.php#AmlSpeller, в новом плагине ("Spell Checker") у меня пока руки не дошли сделать подчеркивание, да и не просил пока никто особо…
Aml Pages Home
Re[14]: CRichEditCtrl + подчеркивание
От: Vlads  
Дата: 09.06.17 06:02
Оценка:
Здравствуйте, Егор, Вы писали:

C>Здравствуйте, Vlads, Вы писали:


V>>Carc, в вашем AmlPages я не вижу, чтобы слова с ошибками подчеркивались. Или это было реализовано в старых плагинах?

C>Это в старом плагине было "Aml Speller", вот он http://www.amlpages.com/Rus/plugins.php#AmlSpeller, в новом плагине ("Spell Checker") у меня пока руки не дошли сделать подчеркивание, да и не просил пока никто особо…

Подскажите еще по поводу работы с текстом:
1) Библиотека Hunspell работает без юникода, а мое приложение юникодное, то это означает, что текст перед проверкой нужно конвертировать в ANSI?
2) В библиотеке есть парсеры. Стоит их использовать для парсинга текста? Или использовать простой поиск по пробелам и выбрасывать знаки препинания?
3) Для поиска слов можно ли использовать ТОМ ричэдита? Я организовал парсинг по tomWord, но выбрасываю слева и справа знаки препинания. При этом у меня есть точная привязка позиции слова, которое я могу подчеркнуть. А если использовать парсинг Hunspell, то позицию нужно как-то вычислять.
4) Если я использую несколько словарей, то нужно организовывать логику поиска в каждом словаре?

Вопросов еще много накопилось. Чувствую, что изобретаю велосипед. :|
Очень надеюсь, что немного поделитесь своим опытом...
Re[15]: CRichEditCtrl + подчеркивание
От: Carc Россия https://vk.com/gosha_mazov
Дата: 09.06.17 10:03
Оценка: 3 (1)
V>Подскажите еще по поводу работы с текстом:
Нивапрос (ц)

V>1) Библиотека Hunspell работает без юникода, а мое приложение юникодное, то это означает, что текст перед проверкой нужно конвертировать в ANSI?

Да, у каждого словаря своя кодировка. При загрузке словаря ее запоминаем, и при проверке перекодируем слова в нужную анси-кодировку, проверяем, если ошибка, то получаем варианты, и перекодируем их обратно в Unicode.

V>2) В библиотеке есть парсеры. Стоит их использовать для парсинга текста? Или использовать простой поиск по пробелам и выбрасывать знаки препинания?

На кой он этот парсер? Он что умеет с RichEdit работать? А с HTML умеет? А вот со Sciter умеет?
Мой опыт показал, что стоит писать движок проверки отдельно, парсер отдельно, а потом их просто скрещивать в нужном проекте. Лучше для повторного использования. В Aml Pages я до это и дошел в конце концов. Ибо ранние версии моих плагинов для проверки орфографии это не учитывали. Не то чтобы всё вперемешку, но все же. В результате вынуть оттуда чистый движок проверки, и прикрутить его к другому проекту было всё затруднительнее и затруднительнее.

Да и в отладке проще. Буквально пару месяцев назад кто-то из пользователей Aml Pages отбагрепортился что тупит с какими-то словами. Делов-то!?! Вынул чистый движок проверки, прогнал его в тестовом проекте на этих словах — нашел багу, поправил. И всё. Дальше пересобрал уже сам плагин и всё готово.

V>3) Для поиска слов можно ли использовать ТОМ ричэдита?

Легко. Я именно так и делал.

V>Я организовал парсинг по tomWord, но выбрасываю слева и справа знаки препинания. При этом у меня есть точная привязка позиции слова, которое я могу подчеркнуть. А если использовать парсинг Hunspell, то позицию нужно как-то вычислять.

Зачем вычислять? Уже описал выше: двигун для проверки на основе Hunspell делаем отдельно, парсер слов отдельно. Дальше просто: движок проверяет, а парсер знает откуда он взял слово и где и как его подчеркнуть.

V>4) Если я использую несколько словарей, то нужно организовывать логику поиска в каждом словаре?

Да. Другого варианта нет. В последней реинкарнации проверки орфографии для Aml Pages (плагин Spell Checker 4.x) так и сделано. Вымаем из текста слово, и шпарим по списку словарей проверку. Если хоть один словарь сказал "о! я, я! ист гут ворд" — значит отлично, какой-то словарь признал словечко. И заканчиваем проверять это слово.
Это позволяет не париться с языковой поддержкой в смешанных текстах. Когда в тексте и аглицкие, и русские, и фашисткие словечки.


V>Вопросов еще много накопилось. Чувствую, что изобретаю велосипед. :|

Как много веселых ребят, и все делают велосипед (ц)

V>Очень надеюсь, что немного поделитесь своим опытом...

Чем могу. Мне тоже советами помогали (правда, там у парня не RichEdit был, а свой с нуля редактор)
Aml Pages Home
Re[16]: CRichEditCtrl + подчеркивание
От: Vlads  
Дата: 06.07.17 06:23
Оценка:
Есть еще некоторые вопросы.
Сейчас встроил библиотеку Hunspell и подключаю ее в виде libhunspell.dll.
1) Хочу в зависимости от наличия этой DLL использовать или не использовать функции спелчекера. Мое приложение будет дистрибутироваться и не всегда нужен спелчекер. Как такое реализовать? уже решил
2) Заметил что словари загружаются и выгружаются достаточно долго (несколько секунд). При наличии нескольких подключаемых словарей время выгрузки будет около 10 сек. Это очень много. использую библиотеку Hunspell 1.3.3. Как эту проблему решал? Или просто 1 раз загружал словари и не выгружаешь никогда?
Отредактировано 06.07.2017 7:52 Vlads . Предыдущая версия .
Re[17]: CRichEditCtrl + подчеркивание
От: Carc Россия https://vk.com/gosha_mazov
Дата: 10.07.17 17:06
Оценка:
Здравствуйте, Vlads, Вы писали:

V>Есть еще некоторые вопросы.


V>2) Заметил что словари загружаются и выгружаются достаточно долго (несколько секунд). При наличии нескольких подключаемых словарей время выгрузки будет около 10 сек. Это очень много. использую библиотеку Hunspell 1.3.3. Как эту проблему решал? Или просто 1 раз загружал словари и не выгружаешь никогда?


Та не, у меня достаточно быстро загружаются… Но у меня в текущем варианте автопроверки нет, только с диалогом. Соответственно, пока пользователь разглядывает диалог, словари вполне успевают загрузиться.

Как вариант, словари можно грузить в фоновом потоке, а потом их отдавать основному потоку, который и делает проверку. Ну и какую-то синхронизацию, мол отключили проверку, основной поток взводит какой-нить евент, и тогда поток загрузки словарей прекращает загрузку словарей. Как-то так!?!
Aml Pages Home
Re[18]: CRichEditCtrl + подчеркивание
От: Vlads  
Дата: 05.10.17 06:52
Оценка:
В принципе я решил большинство проблем о которых раньше спрашивал.
Сейчас есть еще несколько проблем, которые охота решить:
1) Создание своего словаря и добавление в него слов?
2) Я могу добавлять слова в открытый словарь. При этом слова добавляются и эти слова уже не подчеркиваются, но слова похоже, что добавляются в памяти, т.к. файл не редактируется. Могу я добавить слова в DIC-файл? И как создать свой словарь?
Re[19]: CRichEditCtrl + подчеркивание
От: Carc Россия https://vk.com/gosha_mazov
Дата: 19.10.17 10:31
Оценка:
Здравствуйте, Vlads, Вы писали:

V>В принципе я решил большинство проблем о которых раньше спрашивал.

V>Сейчас есть еще несколько проблем, которые охота решить:
V>1) Создание своего словаря и добавление в него слов?
А в чем проблема то? Любой свой файл в любом удобном для себя формате, и в него и добавляем. Ну и соответственно, при проверке сначала ищем слово в своем словаре, и если есть, даже и не запускаем проверку Hunspell, иначе дальше в Hunspell.

V>2) Я могу добавлять слова в открытый словарь. При этом слова добавляются и эти слова уже не подчеркиваются, но слова похоже, что добавляются в памяти, т.к. файл не редактируется.

V>Могу я добавить слова в DIC-файл? И как создать свой словарь?
Ну выше описал… Зачем dic-файл, или aff-файл!?! Это же по сути проверки просто не нужно, все эти словоформы и прочия и прочия. Видим слово, Hunspell считает его ошибкой, пользователь нет. Всё — слово в наш словарь. Т.е. по сути наш словарь выступает как банальный список исключений и только.
Aml Pages Home
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.