| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Вопрос знатокам |
| Автор: Genius3d 15.6.2007, 23:45 |
| Господин Albinos Перекопал уже тонну сайтов и информации. У меня к вам вопрос. Какие есть варианты поиска текста в ворде, при том чтобы можно было выцепить номер страницы? вот вариант 1, как я делал: s:= WordDocument.Range.Text; Далее уже бегал по этому тексту, НО. Номер страницы там не фигурирует, поскольку колонтитутол является обособленным и непростым объектом Word, который не попадает под действие функции Range Появился второй вариант: Count:=WordDocument1.DefaultInterface.Sections.Count; i:=1; ... s:=WordDocument1.DefaultInterface.Sections.Item(i).Range.Text; Ну и далее уже бегаем по s и там ищем, потом перескакиваем на следующий раздел и так далее я подумал что потом как найдем текст можно попробовать выцепить номер страницы, но все оказалось не так просто. Для одного раздела у нас могут быть несколько колонтитулов. Причем текст раздела находится отдельно от колонтитулов (в которых находится номер страницы), поскольку мы обращаемся к колонтитулу следующим образом: s:=WordDocument1.DefaultInterface.Sections.Item(i).Footers.Item(k).Range.Text где k идет от 1 до WordDocument1.DefaultInterface.Sections.Item(i).Footers.Count Зачем мне нужен номер страницы? А вот зачем: var What, Which, Name : OleVariant; .... What:=wdGoToPage; Which:=wdGoToNext; Name:='2'; WordApplication1.Selection.GoTo_(What, Which, EmptyParam, Name); чтобы при открытии файла у меня курсор указывал на нужное место. Конечно можно например найти текст, а потом закрасить его другим текстом, как реализовано в многих поисковиках. Нашел как это делать. Никакой макрос писать не надо, как говорил Hunter если кому надо WordDocument.Range(a,b).Font. Color:= clRed; ну или какой другой. Потом сохраняем файл, но это не выход потому что, если много раз искать то патом весь файл станет желтым).. или красным))... Вообщем задача состоит в следующем: Есть куча файлов Doc нужно среди них найти те файлы в которых встречается такое - то слово, выдать кусок текста где оно встречается и открыть файл если пользователь захочет на том месте где это слово найдено. Все сделал, кроме последнего. Из последнего условия функцию поиска переписывал наверное раз 5, теперь у меня есть несколько совершенно различных алгоритмов))...но ниодин неможет открыть файл на том месте где встретилось слово. Собственно поэтому я остановился на номере страницы. Потому что он нужен для перехода на нужную страницу. |
| Автор: Genius3d 16.6.2007, 11:38 |
| Причем тут Дельфи для новичков када у меня работа с OLE.....))))Модератор просто жжет))) |
| Автор: Guedda 16.6.2007, 13:13 |
Потому что это вопрос новичка в OLE |
| Автор: Snowy 16.6.2007, 13:39 | ||
|