Delphi - OLE - Word: Как узнать позицию найденной строки? #247651


#0 by Chubrik
Текст ищется, но как мне потом узнать его позицию? 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 by smaharbA
Позицию в чем ? в доке/парагрофе/... ? А так Только вот зачем ???!
#2 by Chubrik
Зачем? Анализ документа по содержанию.   RangeStart:=fnd.Parent.Start;   RangeFin:=fnd.Parent.End; Нет там таких параметров - Start, End.
#3 by smaharbA
Кто тебе сказал что нету ? Start; End; "Зачем? Анализ документа по содержанию" - а зачем позиция ? и позиция какая док/секция/контент/параграф и т.д. и т.п.
#4 by Chubrik
Найти позицию в документе. Start тоже нет. И End нет. Пробовал. Позиция для выдирания данных, следующих за найденной строкой.
#5 by romix
Попробуй запустить Запись макроса - тебе Ворд нарисует макрос, где все методы показаны. Я так делал.
#6 by smaharbA
Да ну, вот тебе рабочий код на васике
#7 by Chubrik
Пробовал запись макроса, там пишет просто Execute после установки параметров. Ребята, мне на Делфях надо, через Ole... А оттуда Start/End нет/не видит в ворде почему-то :(
#8 by smaharbA
Смотри внимательно
#9 by Chubrik
Ну и? В делфях есть WordDocument1.Range.Find.Parent, но свойств Start, Start, End, End нет, т. е. WordDocument1.Range.Find.Parent.Start/WordDocument1.Range.Find.Parent.Start не катит.
#10 by smaharbA
А ты пробовал ?
#11 by smaharbA
Parent это Range, а у ранжа есть и старт и енд
#12 by Chubrik
Ну блин, ну конечно пробовал. У меня Делфя открыта, и все, что советуете, пробую сразу же. Действительно, WordDocument1.Range.Start есть, а WordDocument1.Range.Find.Parent.Start нет почему-то. У меня вот из-за этого-то и возник вопрос для открытия темы.
#13 by smaharbA
Нету дельфи :( Вот джабаскр 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 by Chubrik
WScript.Echo(fnd.Parent.End); WScript.Echo(fnd.Parent.Start); А это что за извращение еще?
#15 by Chubrik
Нет такого в делфях - WScript
#16 by smaharbA
Дак это понятно, это просто вывожу на экран понятно что там messagebox
#17 by Chubrik
Тогда я чего-то не понимаю... В чем смысл ? Свой кусок кода я привел в
#18 by Chubrik
И все-таки, что за глюк - ?
#19 by smaharbA
Сделай попробуй переменные типа объект (ну как там в дельфи правильно, хотя вроде в паскале нет приведения типов, но х.з.) fnd:=WordDocument1.Range.Find; и Rang=fnd.Parent;
#20 by Chubrik
Так съел Start, но значение всегда 0.
#21 by Chubrik
Слушай, вроде как заработало.   fnd.Parent.Select;   rang:=fnd.Parent;   d1:=rang.Start;   d2:=rang.End;
#22 by Chubrik
Большое спасибо за ответы!
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С