Замена “hello you” на “hello me”

Автор Ципихович Эндрю, 4 января 2024, 19:35

0 Пользователи и 1 гость просматривают эту тему.

Ципихович Эндрю

здравствуйте, вроде взял с доки у Питоняки:
Sub SearchReplace REM Листинг 274. Замена "hello you" на "hello me".

Dim oDoc As Object
  oDoc = ThisComponent.Text
Dim oDescriptor As Object
oDescriptor = oDoc.createReplaceDescriptor()
With oDescriptor
  .SearchString = "hello you" REM что заменяем
  .ReplaceString = "hello me" REM на что заменяем
End With
oDoc.ReplaceAll(oDescriptor)

End Sub
три первых строки добавил сам, так как не работало
одним словом и после моей корректировки не работает, как поправить?
2
как не меняя ничего в документе просто выяснить кодом есть ли искомое в документе?
3
в ворде есть три вида пробела
Chr$(45)
Chr$(150)
Chr$(151)
в либре они также имеются? спасибо


sokol92

Владимир.

bigor

Цитата: Ципихович Эндрю от  4 января 2024, 19:35три первых строки добавил сам, так как не работало
чуть выше в 273 листинге, есть ответы на вопросы 1 и 2
Поддержать наш форум можно здесь

Ципихович Эндрю

Цитата: sokol92 от  4 января 2024, 20:33Почему Вы дефис-минус, среднее тире и длинное тире называете пробелами?
думал об одном, а скопировал другое, извините
^s    Nonbreaking space (°)    Неразрываемый пробел (°), ставится одновременным нажатием CTRL+SHIFT+SPACEBAR, SPACEBAR это пробел
ищется как? в моём вопросе № 2 первого поста

sokol92

Цитата: Ципихович Эндрю от  4 января 2024, 20:46Неразрываемый пробел (°), ставится одновременным нажатием CTRL+SHIFT+SPACEBAR
Так же и в Writer.
Владимир.

Ципихович Эндрю

не пойму, я код уладил-проверил
потом стал экспериментировать меняя содержимое кода, один раз он у меня упал, я вернул всё обратно:
Sub SearchReplace REM Листинг 274. Замена "hello you" на "hello me".

Dim oDoc As Object
  oDoc = ThisComponent
Dim oDescriptor As Object
oDescriptor = oDoc.createReplaceDescriptor()
With oDoc.createReplaceDescriptor()
  .SearchString = "hello you" REM что заменяем
  .ReplaceString = "hello me" REM на что заменяем
End With
oDoc.ReplaceAll(oDescriptor)

End Sub
и теперь не хочет заменять, это что по аналогии с тем, с чем я столкнулся ранее - если код упал, нужно убивать процесс в Диспетчере задач?
в коде всё правильно?

bigor

Код
Цитата: Ципихович Эндрю от  4 января 2024, 21:35в коде всё правильно?
нет.Вы уже определили oDescriptor, поэтому после width должен быть он
Поддержать наш форум можно здесь

Ципихович Эндрю

с этим разобрался:
Sub SearchReplace REM Листинг 274. Замена "hello you" на "hello me".

Dim oDoc As Object
  oDoc = ThisComponent
Dim oDescriptor As Object
oDescriptor = oDoc.createReplaceDescriptor()
With oDescriptor
  .SearchString = "hello you"
  .ReplaceString = "hello me"
End With
oDoc.ReplaceAll(oDescriptor)

End Sub
теперь наличием в тексте Chr(160) займусь

Ципихович Эндрю

здравствуйте, мой код:
Sub Searc REM Листинг 273

    Dim oDoc As Object
     oDoc = ThisComponent
    Dim oSearchDescr 'Описатель поиска
    oSearchDescr = oDoc.createSearchDescriptor()
    With oSearchDescr
        'Chr(160) это:
         '^s - вводить в поле ввода при поиске
         'Nonbreaking space (°)
         'Неразрываемый пробел (°)
         'Ставится одновременным нажатием CTRL+SHIFT+SPACEBAR, SPACEBAR это пробел
         '  - в WWW  NBSP-символ
         .SearchString = Chr(160)
         '.SearchRegularExpression = True
     End With
    Dim oAllFound 'Все найденные элементы
    oAllFound = oDoc.findAll(oSearchDescr)
    MsgBox oAllFound.getCount() 'Количество всех найденных элементов

End Sub
работает правильно выдаёт количество 1-это верно, только не понятно, а три знака, на скрине на первой строчке - выше надписи Привет мир, это какой Chr(?)

sokol92

Цитата: Ципихович Эндрю от  5 января 2024, 21:17три знака, на скрине на первой строчке - выше надписи Привет мир, это какой Chr(?)
А как это можно определить по картинке?
Владимир.