Word и скрипты

elenangel

недавно при решении одной задачки (а именно: из букв слов липа+вена составить слово - название вида спорта) решил использовать следующий изврат
сгенерировал все перестановки букв и погнал скриптом по проверке орфографии в ворде,
он за 3 (!) часа работы нашел нужное слово.
3 часа было видимо потому, что слова документа (а их было 40320 с учетом знаков переноса строки, которые ворд тоже считает словом) хранятся в виде связанного списка, в начале перебора он дает где-то 170 слов/сек а к концу скорость падает до 5 слов/сек.
вчера понадобилось для составления задач школьникам на практике по английскому выбрать
все осмысленные перестановки из слова halloween и его подстрок. Я думал заюзать этот же скрипт, но оказалось, что никакие мои усилия не могут заставить ворд проверять слова по английскому словарю, он все время делает по русскому или ругается на отсутствие каких-то
библиотек. Пробовал удалять компонент проверки русской орфографии - это не помогает.
Может кто знает, как это сделать?

0000

Может проще взять в интернете обычный перечень слов (для русского языка, напр. http://www.english4free.ru/index.php?option=com_remository&a..., для английского лень искать) и написать новую прожку?
Как вариант можно поставить Eng версию Word.

elenangel

Да, взять и написать - это вообще идеальный вариант, но
http://www.english4free.ru/index.php?option=com_remository&a...
дает Illegal download attempt
к тому же инет под рукой есть гораздо реже чем ворд
и так как в ворде как то все-таки проверяются английские слова, хочется научится юзать это.

0000

Ну скрипто то же не под рукой.
Вот отсюда скачивал - http://www.english4free.ru/index.php?option=com_remository&a... - 500Кб.

elenangel

спасибо, я уже English нашел
а насчет скрипт не под рукой - это ты ошибаешься, Visual Basic в ворде встроеный,
простенький скрипт накатать - дело не слишком долгое

elenangel

кстати, зашибись словарь
Ящичке
Ящичных
Яырэ
Яюсху
Яюфртрыш
Яюфыхцрыш
Яючфэхх
Яющие
Яюърчрыр
Яюыэюх
Яюыэюь
Яюыютшэр
Яюыютшэх
Яюыюцшы
Яюьюурыш
Яюярфрыш

я не знал, что в русском есть такие слова :grin:

pitrik2

3 часа было видимо потому, что слова документа (а их было 40320 с учетом знаков переноса строки, которые ворд тоже считает словом) хранятся в виде связанного списка, в начале перебора он дает где-то 170 слов/сек а к концу скорость падает до 5 слов/сек.
эээ
ты похоже обращаешься к списку по индексу
а нужно его ЗА ОДИН раз проходить и при этом ПОСЛЕДОВАТЕЛЬНО
покажи кусок кода где ты проходишь по списку

elenangel

я использовал код вроде

For i = 1 To ActiveDocument.Words.Count Step 1
MsgBox ActiveDocument.Words.Item(i)
Next i

elenangel

проблему со скоростью я обошел тем, что проверял слова
из TStringList в Delphi вызывая WordApplication, так тормозов нет
а вот с английским не получилось

pitrik2

ActiveDocument.Words.Item(i)
вот тут и фигня
так не нужно делать
я ворд плохо знаю, но наверняка там есть последовательный обход списка, а не по индексу
есть там какойнить foreach?

pitrik2

открыл ворд
создал новый макрос, вставил тудыть твой скрипт
нажал на For клавишу F1
появилась справка предлагающая For Each :)
вот что получилось с твоим кодом:

For Each Item In ActiveDocument.Words
MsgBox Item
Next Item

так должно быстро работать

Andbar

все осмысленные перестановки из слова halloween и его подстрок. Я думал заюзать этот же скрипт, но оказалось, что никакие мои усилия не могут заставить ворд проверять слова по английскому словарю, он все время делает по русскому или ругается на отсутствие каких-то
библиотек.
Ворд, я так понимаю, устанавливался в дефолтной установке?

elenangel

я ворд тоже не особо знаю, тоже сообразил теперь, что фигню с for'ом спорол.
foreach действительно решает

elenangel

офис ставил в полной установке, 2000, sp3
английская орфография там по любому есть, потому что руками он все проверяет

Andbar

Нужно, чтобы ворд определил твои слова как англиские. Для этого есть метод DetectRange, ну и, возможно, просто можно сделать что-то типа:
Range.LanguageID = wdEnglishUS
На работоспособность не проверял.
Оставить комментарий
Имя или ник:
Комментарий: