Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.24;
Скачать: CL | DM;

Вниз

Проверка правописания   Найти похожие ветки 

 
Fants   (2003-11-01 13:57) [0]

Подскажите пожалуйста! Как можно реализоват проверку правописания, можно ли к своей программе подключить
проверку правописания из Office


 
xGhost ©   (2003-11-01 15:38) [1]

Используй ActiveX
Нужный модуль экспортируй из списка и работай на здоровье :)


 
mashinist ©   (2003-11-02 04:00) [2]

Такие компоненты есть.
Название не помню. Поищи сам.


 
KSergey ©   (2003-11-02 09:35) [3]

Например, компонента TSpellChecker и ее подправленные потомки.
http://www.formulasoft.ru/spellchecker.html
Вся в исходниках, беспатная, изучай на здоровье.

Или сам. Тогда из ворда методы (ну из его COM-объекта, имеется в виду):

WordApp.CheckSpelling - проверка
WordApp.GetSpellingSuggestions - варианты замены

Удаоился об такую фигню: GetSpellingSuggestions не работает, если в ворде не создан документ, хотя это вроде как и метод объекта WordApplication, а не документа (MS Word 97, во всяком случае).

Для этого предлагаю код подключения (при позднем связывании) например такой (будут предложения - пиши, может что-то не учел):

var
WordDoc: OLEVariant;
IsMSWordNew: Boolean;
begin
// подключиться к MS Word, настроить его
try
FWordApp := GetActiveOleObject ("Word.Application");
IsMSWordNew := FALSE; // признак, что удалось подключиться к существующему экземпляру ворда
except
FWordApp := CreateOLEObject ("Word.Application");
FWordApp.Visible := FALSE;
IsMSWordNew := TRUE; // признак, что создан новый ворд - его надо будет закрыть
end;
try // для гарантированного отключения от MS Word
// как было выяснено, для получения списка вариантов слов в ворде обязательно должен быть создан хоть один документ
if FWordApp.Documents.Count < 1 then
WordDoc := FWordApp.Documents.Add
else
WordDoc := NULL; // указать, что своего документа не создавалось и необходимоcти его закрывать - нет
........; // собственно проверка орфографии
finally
// отключиться от MS Word
if VarType(WordDoc) <> varNull then WordDoc.Close(FALSE);
if IsMSWordNew then
FWordApp.Quit (FALSE);
end;


Кусочек текста по поводу проверки слова (только слово!!) и отображения вариантов (здесь TestWord: String - проверяемое слово из текста):

if NOT FWordApp.CheckSpelling(TestWord) then // если слово не правильное
begin
// оформить поля ввода в форме
// варианты замены
lbxChoice.Items.Clear; // lbxChoice - это ListBox
Sugg := FWordApp.GetSpellingSuggestions(TestWord);
if Sugg.Count < 1 then
begin
lbxChoice.Items.Add (" (нет вариантов)");
lbxChoice.Enabled := FALSE;
end
else
begin
for i := 1 to Sugg.Count do
lbxChoice.Items.Add (Sugg.Item(i).Name);
lbxChoice.Enabled := TRUE;
end;


Еще найденные мною варианты:

Название Addict - диалог проверки орфографии. Взято тут http://delphi.chertenok.ru/forum/my_download.php?tema=del&action=show&id=117

Это пример применения в FAR-е, с сиходниками. Тут используется иной метод подключения, хотя скорее всего к тому же ворду (вернее, к офисной проверке орфографии, собственно ворд тут уже ни при чем) будет произведено подключение, т.к. врятли у кого-то есть другие проверяльщики орфографии на компе (через CSAPI)
Плугин - gSpell
http://plugring.farmanager.com/cgi-bin/downld.cgi?Draw=List&Select=Categ&SelectCateg=Spelling

Описание по CSApi я тоже где-то стырил, но не помню где.

К стати, поищите по строке "Добавление функций проверки орфографии в разрабатываемые приложения" - статья есть, где все это подробнейше описано. Только метод подключения к ворду я использую несколько по-своему (см. выше) ввиду обнаруженного нюанса.

Попадались мне так же 3-4 примера для VB, но уже не буду здесь загромождать, т.к. по сути - это тоже самое. Хотя, есть и еще метод: текст пихается в ворд (программно ;), запускается проверка орфографии, по ее окончании - забираем текст обратно. Кода вообще минимум, все почти красиво, но свое приложение в этот момент не отрисовывается... Ну там с потоками можно мудрить - но стоит ли?

Такой вот отчетик ;)

PS
Это все я нарыл примерно за пол-дня в инете (вместе с тщательным изучением, моделированием и отсеканиет одинаковых вариантов). Может и тебе в след. раз с избитыми вообще-то вопросами так же попробовать поступить?



Страницы: 1 вся ветка

Текущий архив: 2003.11.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.079 c
1-78970
Grokhem
2003-11-13 17:20
2003.11.24
Как изменить font в PopupMenu?


3-78761
Aleksandr
2003-11-03 11:59
2003.11.24
Как бороться с открытой сессией Парадокса?


8-79061
Andry
2003-07-28 00:19
2003.11.24
Скорость нажатия клавиш


1-78944
Teapot
2003-11-13 23:23
2003.11.24
Клавиши управления курсором


14-79188
Думкин
2003-11-03 05:17
2003.11.24
С днем рождения! 3 ноября.