![]() |
![]() |
![]() |
|
Delphi - OLE - Word: Как узнать позицию найденной строки? | ☑ | ||
---|---|---|---|---|
0
Chubrik
16.01.07
✎
10:40
|
Текст ищется, но как мне потом узнать его позицию?
WordDocument1.Range.Find.ClearFormatting; if WordDocument1.Range.Find.Execute(str, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam) then begin ??? Хотелось бы чего-нибудь вроде: RangeStart:=WordDocument1.Range.Find.Start; RangeFin:=WordDocument1.Range.Find.End_; |
|||
1
smaharbA
16.01.07
✎
11:07
|
Позицию в чем ? в доке/парагрофе/... ?
А так
Только вот зачем ???! |
|||
2
Chubrik
16.01.07
✎
11:13
|
(1)
Зачем? Анализ документа по содержанию. RangeStart:=fnd.Parent.Start; RangeFin:=fnd.Parent.End; Нет там таких параметров - Start, End. |
|||
3
smaharbA
16.01.07
✎
11:16
|
(2) Кто тебе сказал что нету ?
Start(); End(); "Зачем? Анализ документа по содержанию" - а зачем позиция ? и позиция какая док/секция/контент/параграф и т.д. и т.п. |
|||
4
Chubrik
16.01.07
✎
11:19
|
Найти позицию в документе.
Start() тоже нет. И End() нет. Пробовал. Позиция для выдирания данных, следующих за найденной строкой. |
|||
5
romix
модератор
16.01.07
✎
11:26
|
Попробуй запустить Запись макроса - тебе Ворд нарисует макрос, где все методы показаны. Я так делал.
|
|||
6
smaharbA
16.01.07
✎
11:26
|
(4) Да ну, вот тебе рабочий код на васике
|
|||
7
Chubrik
16.01.07
✎
11:45
|
Пробовал запись макроса, там пишет просто Execute после установки параметров.
Ребята, мне на Делфях надо, через Ole... А оттуда Start/End нет/не видит в ворде почему-то :( |
|||
8
smaharbA
16.01.07
✎
11:48
|
(7) Смотри внимательно (6)
|
|||
9
Chubrik
16.01.07
✎
11:51
|
(8) Ну и? В делфях есть WordDocument1.Range.Find.Parent, но свойств Start, Start(), End, End() нет, т. е. WordDocument1.Range.Find.Parent.Start/WordDocument1.Range.Find.Parent.Start() не катит.
|
|||
10
smaharbA
16.01.07
✎
11:56
|
(9) А ты пробовал ?
|
|||
11
smaharbA
16.01.07
✎
11:56
|
Parent это Range, а у ранжа есть и старт и енд
|
|||
12
Chubrik
16.01.07
✎
11:58
|
(10) Ну блин, ну конечно пробовал. У меня Делфя открыта, и все, что советуете, пробую сразу же.
Действительно, WordDocument1.Range.Start есть, а WordDocument1.Range.Find.Parent.Start нет почему-то. У меня вот из-за этого-то и возник вопрос для открытия темы. |
|||
13
smaharbA
16.01.07
✎
12:01
|
Нету дельфи :(
Вот джабаскр word=new ActiveXObject("Word.Application"); doc=word.Documents.Open("c:/find.doc"); fnd = doc.Range().Find; fnd.Execute ("eee"); if (fnd.Found==true){ WScript.Echo(fnd.Parent.End); WScript.Echo(fnd.Parent.Start); } doc.close(); word.quit(); |
|||
14
Chubrik
16.01.07
✎
12:05
|
(13)
WScript.Echo(fnd.Parent.End); WScript.Echo(fnd.Parent.Start); А это что за извращение еще? |
|||
15
Chubrik
16.01.07
✎
12:06
|
Нет такого в делфях - WScript
|
|||
16
smaharbA
16.01.07
✎
12:10
|
(15) Дак это понятно, это просто вывожу на экран
понятно что там messagebox |
|||
17
Chubrik
16.01.07
✎
12:12
|
Тогда я чего-то не понимаю... В чем смысл (13)?
Свой кусок кода я привел в (0) |
|||
18
Chubrik
16.01.07
✎
12:23
|
И все-таки, что за глюк - (12)?
|
|||
19
smaharbA
16.01.07
✎
13:20
|
Сделай попробуй переменные типа объект (ну как там в дельфи правильно, хотя вроде в паскале нет приведения типов, но х.з.)
fnd:=WordDocument1.Range().Find; и Rang=fnd.Parent; |
|||
20
Chubrik
16.01.07
✎
15:09
|
(19) Так съел Start, но значение всегда 0.
|
|||
21
Chubrik
16.01.07
✎
15:27
|
(19) Слушай, вроде как заработало.
fnd.Parent.Select; rang:=fnd.Parent; d1:=rang.Start; d2:=rang.End; |
|||
22
Chubrik
16.01.07
✎
15:27
|
Большое спасибо за ответы!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |