powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не срабатывает поиск в ворде
12 сообщений из 12, страница 1 из 1
Не срабатывает поиск в ворде
    #39453856
Пытливый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь в вордовском документе сделать поиск. Подключаюсь через OLE и вот в VB поиск проходит, а вот в Delphi нет:
Вот код в VB который отлично срабатывает в Ворде
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Set Doc = ActiveDocument.Content
Doc.Find.Text = "+7([0-9]{10})>"
Doc.Find.MatchWildcards = True
Doc.Find.Forward = True
Do
 Doc.Find.Execute
 Doc.Bold = True
Loop Until Not Doc.Find.Found


и вот код который не срабатывает в Delphi
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
 WordDoc := WordApp.Documents.Open(FileName);
 WordDoc.Content.Find.Text := '+7([0-9]{10})>';
 WordDoc.Content.Find.MatchWildcards := True;
 WordDoc.Content.Find.Forward := True;
 repeat
  WordDoc.Content.Find.Execute;
 until not WordDoc.Content.Find.Found;
 WordDoc.Close;


в VB Doc.Find.Found дает Истину, а в Delphi WordDoc.Content.Find.Found дает False
Куда копать?
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39453862
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПытливыйКуда копать?Например, смотреть позицию курсора в начале поиска.

Далее, где строкаПытливый
Код: vbnet
1.
 Doc.Bold = True

? Вы не вхолостую пробегаете весь документ?
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39453934
Пытливый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, не вхолостую. Я просто убрал из примера лишнее. Насчет курсора попробую, но это странно если окажется в этом проблема.
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39453965
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытливыйно это странно если окажется в этом проблема.Почему? Вы же сами просите
Пытливый
Код: pascal
1.
 WordDoc.Content.Find.Forward := True;

Может, Вам нужно еще добавить
Код: pascal
1.
 WordDoc.Content.Find.Wrap := wdFindContinue;

?
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39454002
Пытливый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно это, потому-что идентичный код на VB ничего подобного не требует.
Вообще этот метод поиска не использует выделения и позиционирования, поэтому установка курсора для него не имеет значения. Вот если бы я брал selection а не content тогда да, но даже с позиционированием все равно не ищет.
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39454129
Пытливый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нифига не получается, как не пробую не хочет работать через Content, а нужен именно Content т.к. идет асинхронный поиск в нескольких документах. Все великолепно отрабатывает в VB и напрочь не желает так-же работать в Delphi.
Execute должен возвращать True если текст найден и в VB он все корректно возвращает. В дельфи результат постоянно равен True.
То-же самое с результатом Doc.Find.Found. В VB все корректно отрабатывает, а в Delphi он наоборот всегда равен False.
Я и с полным перечнем параметров вызывал Execute и с именованными и без параметров - пофик, нет результата.
Я в печали.
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39455059
Пытливый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел я рабочее решение, НО!
Если написать так:
Код: pascal
1.
2.
WordDoc := WordApp.Documents.Open(FileName);
WordDoc.Content.Find.Execute


То Execute не работает. Но если написать вот так:
Код: pascal
1.
2.
3.
WordDoc := WordApp.Documents.Open(FileName);
WordContent := WordDoc.Content;
Word.Find.Execute


То Execute уже работает. Логичного объяснения происходящего найти не могу.
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39455602
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытливый
Код: pascal
1.
2.
3.
WordDoc := WordApp.Documents.Open(FileName);
WordContent := WordDoc.Content;
Word.Find.Execute

И что здесь Word?
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39455698
Пытливый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опечатался в форуме. Конечно там будет WordContent
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39455989
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытливый,

А если так?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var
  LDisp1: IDispatch;
  LDisp2: IDispatch;
begin
  WordDoc := WordApp.Documents.Open(FileName);
  LDisp1 := WordDoc.Content;
  LDisp2 := WordDoc.Content;
  if LDisp1 = LDisp2 then
    ShowMessage('Equals')
  else
    ShowMessage('not Equals')
end;

и тоже самое проверить для
Код: pascal
1.
2.
3.
var
  LDisp1: OleVariant;
  LDisp2: OleVariant;
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39456505
Пытливый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо вы хотели узнать равны ли WDoc.Content и WContent
Мне и самому интересно было бы это узнать, но вот как их сравнить - загадка т.к. VarCompareValue(WDoc.Content, WContent) в данном случае вызывает ошибку. Из этого косвенно можно понять, что WDoc.Content не Variant и значит WDoc.Content уже не равен WContent.
...
Рейтинг: 0 / 0
Не срабатывает поиск в ворде
    #39456745
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПытливыйВидимо вы хотели узнать равны ли WDoc.Content и WContentНет. Я хотел узнать равно то, что описано кодом
Пытливыйкак их сравнить - загадка т.кЯ привел готовый код. Что мешает его выполнить?
ПытливыйVarCompareValueЭта функция не может вызываться при сравнении двух IDispatch
Пытливыйв данном случае вызывает ошибкуСекретную?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не срабатывает поиск в ворде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]