Алгоритм проверки правописания
От: Осенний дождь Россия  
Дата: 17.03.09 14:04
Оценка:
Доброе время суток,

Есть у меня один проект — чат. Среди всего прочего нужно проверять правописание в многострочном окне. На текущий момент после ввода каждого символа проверяются все слова в окне. Пользователи программы говорят, что их раздражает когда недопечатанное слово подчеркивается.

Отсюда вопросы: Кто знает как реализована логика проверки текста? Как определить что слово написано полностью? Причем может быть ситуация когда пользователь напечатает одно слово и отправит текст, не поставив таже точки в конце слова. Текст в окно может попасть из clipboard.
Re: Алгоритм проверки правописания
От: cvetkov  
Дата: 17.03.09 14:19
Оценка:
первая проблема решается путем исключения слова в котором находится курсор из проверки.

вторая решается отменой первого правил если слово одно
можно еще ввести задержку и проверять через пол секунды после последнего введенного символа

по науке конечно нужно помнить редактируемое слово, чтобы перевод курсора в неправильное слово не снимал подсветку.
Re[2]: Алгоритм проверки правописания
От: Осенний дождь Россия  
Дата: 17.03.09 14:25
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>первая проблема решается путем исключения слова в котором находится курсор из проверки.


C>вторая решается отменой первого правил если слово одно

C>можно еще ввести задержку и проверять через пол секунды после последнего введенного символа

C>по науке конечно нужно помнить редактируемое слово, чтобы перевод курсора в неправильное слово не снимал подсветку.

А если пользователь перевел курсор в неправильное слово и напечатал один символ?
Re: Алгоритм проверки правописания
От: vadimcher  
Дата: 17.03.09 15:12
Оценка:
Здравствуйте, Осенний дождь, Вы писали:

ОД>Доброе время суток,


ОД>Есть у меня один проект — чат. Среди всего прочего нужно проверять правописание в многострочном окне. На текущий момент после ввода каждого символа проверяются все слова в окне. Пользователи программы говорят, что их раздражает когда недопечатанное слово подчеркивается.


ОД>Отсюда вопросы: Кто знает как реализована логика проверки текста? Как определить что слово написано полностью? Причем может быть ситуация когда пользователь напечатает одно слово и отправит текст, не поставив таже точки в конце слова. Текст в окно может попасть из clipboard.


Можно так: для всех введенных слов (тех, которые разделены пробелом и другими знаками) делать проверку на то, есть ли такое слово в словаре, а для того, которое вводится, проверять, есть ли в словаре слова, начинающиеся на то, что уже введено. В большинстве случаев такая проверка покажет, если есть ошибка, за исключением редких случаев, когда ошибка приводит к другому написанию -- возможному началу какого-то другого слова. Причем перед напечатанием последнего символа и отправкой, скорее всего, если ошибка уже была допущена, то она проявится.

А вот зайца кому, зайца-выбегайца?!
Re[3]: Алгоритм проверки правописания
От: cvetkov  
Дата: 17.03.09 15:28
Оценка:
C>>по науке конечно нужно помнить редактируемое слово, чтобы перевод курсора в неправильное слово не снимал подсветку.
ОД>А если пользователь перевел курсор в неправильное слово и напечатал один символ?
значит он начал редактировать это слово и его проверять не надо. пока его редактирование не закончится. ворд, например, считает что редактирование закончилось если курсор покинул пределы слова (и еще какието события я не уверен)
Re[4]: Алгоритм проверки правописания
От: Осенний дождь Россия  
Дата: 19.03.09 09:22
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>>>по науке конечно нужно помнить редактируемое слово, чтобы перевод курсора в неправильное слово не снимал подсветку.

ОД>>А если пользователь перевел курсор в неправильное слово и напечатал один символ?
C>значит он начал редактировать это слово и его проверять не надо. пока его редактирование не закончится. ворд, например, считает что редактирование закончилось если курсор покинул пределы слова (и еще какието события я не уверен)

Вообщем я для себя определил следующий алгоритм.
1) После ввода любого символа проверять все слова, кроме того где находиться курсор
2) Если с момента последнего ввода символа прошло время T, то проверяем слово в котором находиться курсор
3) При перемещении курсора в неверно написанное слово подчеркивание снимать не нужно до тех пор пока не будет введен хотя бы один символ (либо стерт)

Все верно? Я ничего не забыл?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.