Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не срабатывает поиск в ворде / 12 сообщений из 12, страница 1 из 1
16.05.2017, 14:43:11
    #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
16.05.2017, 14:49:28
    #39453862
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает поиск в ворде
ПытливыйКуда копать?Например, смотреть позицию курсора в начале поиска.

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

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

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

?
...
Рейтинг: 0 / 0
16.05.2017, 17:22:39
    #39454002
Пытливый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает поиск в ворде
Странно это, потому-что идентичный код на VB ничего подобного не требует.
Вообще этот метод поиска не использует выделения и позиционирования, поэтому установка курсора для него не имеет значения. Вот если бы я брал selection а не content тогда да, но даже с позиционированием все равно не ищет.
...
Рейтинг: 0 / 0
16.05.2017, 20:01:34
    #39454129
Пытливый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает поиск в ворде
Нифига не получается, как не пробую не хочет работать через Content, а нужен именно Content т.к. идет асинхронный поиск в нескольких документах. Все великолепно отрабатывает в VB и напрочь не желает так-же работать в Delphi.
Execute должен возвращать True если текст найден и в VB он все корректно возвращает. В дельфи результат постоянно равен True.
То-же самое с результатом Doc.Find.Found. В VB все корректно отрабатывает, а в Delphi он наоборот всегда равен False.
Я и с полным перечнем параметров вызывал Execute и с именованными и без параметров - пофик, нет результата.
Я в печали.
...
Рейтинг: 0 / 0
18.05.2017, 00:49:43
    #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
18.05.2017, 18:16:06
    #39455602
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает поиск в ворде
Пытливый
Код: pascal
1.
2.
3.
WordDoc := WordApp.Documents.Open(FileName);
WordContent := WordDoc.Content;
Word.Find.Execute

И что здесь Word?
...
Рейтинг: 0 / 0
18.05.2017, 22:11:37
    #39455698
Пытливый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает поиск в ворде
Опечатался в форуме. Конечно там будет WordContent
...
Рейтинг: 0 / 0
19.05.2017, 11:48:54
    #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
19.05.2017, 22:22:41
    #39456505
Пытливый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает поиск в ворде
Видимо вы хотели узнать равны ли WDoc.Content и WContent
Мне и самому интересно было бы это узнать, но вот как их сравнить - загадка т.к. VarCompareValue(WDoc.Content, WContent) в данном случае вызывает ошибку. Из этого косвенно можно понять, что WDoc.Content не Variant и значит WDoc.Content уже не равен WContent.
...
Рейтинг: 0 / 0
21.05.2017, 00:08:32
    #39456745
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает поиск в ворде
ПытливыйВидимо вы хотели узнать равны ли WDoc.Content и WContentНет. Я хотел узнать равно то, что описано кодом
Пытливыйкак их сравнить - загадка т.кЯ привел готовый код. Что мешает его выполнить?
ПытливыйVarCompareValueЭта функция не может вызываться при сравнении двух IDispatch
Пытливыйв данном случае вызывает ошибкуСекретную?
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не срабатывает поиск в ворде / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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