|
Подскажите как из 1с в Word и OpenOffice Writer найти стоки вида [любой_текст] | ☑ | ||
---|---|---|---|---|
0
kn
05.02.14
✎
22:07
|
т.е все стоки которые в [], подскажите какие функции использовать
|
|||
1
Torquader
05.02.14
✎
22:11
|
В Word есть механизм поиска, а в OO - текстовый курсор с поиском.
И по тому и по другому есть описание встроенных функций и объектов, правда, только на английском языке. |
|||
2
spectre1978
05.02.14
✎
22:12
|
(0) для Word и OOo механизмы будут совершенно разные.
|
|||
3
kn
05.02.14
✎
22:14
|
умею искать символ и там и там, а что дальше не знаю
|
|||
4
kn
05.02.14
✎
22:16
|
ну пусть дальше нужно считать слово без пробелов, кто-нибудь может подсказать как
|
|||
5
spectre1978
05.02.14
✎
22:17
|
(3) в ворде можно заказать запись макроса, запустить поиск и посмотреть какой будет вызван метод. Затем вставить его себе в обработку. Как вызывать методы ООо через OLE - честно сказать, не знаю, но как-то понадобилось написать макрос под OOo Calc - все проклял, потому что дока была только на sun.com, только на английском и далеко не прозрачная. В конце концов сделал, но помахаться пришлось мама дорогая.
|
|||
6
kn
05.02.14
✎
22:18
|
макрос - это хорошо.
может кто скинет ссылку где есть описания функций openoffice |
|||
7
spectre1978
05.02.14
✎
22:23
|
||||
8
spectre1978
05.02.14
✎
22:25
|
Вот тут про поиск есть:
https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Editing_Text_Documents |
|||
9
Torquader
05.02.14
✎
22:36
|
(5) Там немного идеология другая, но потом начинаешь понимать, что это Word через одно место писан.
Например, в OO часто в функцию передаётся не несколько параметров, а один объект, атрибутами которого являются все нужные для исполнения параметры. Просто, когда функцию вызываешь несколько раз с теми же параметрами - понимаешь, что не нужно ничего заново заполнять. |
|||
10
spectre1978
05.02.14
✎
22:41
|
(9) я не против, просто документировано на тот момент было не особенно хорошо (2010). Возможно, сейчас ситуация с докой улучшилась, а тогда по своему вопросу удалось найти только что-то древнее, писанное, судя по всему, еще во времена StarOffice. Правда, все заработало как планировалось.
|
|||
11
kn
06.02.14
✎
10:46
|
для OpenOffice пробую так
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager"); Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Args = Новый COMSafeArray("VT_VARIANT", 1); Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства1.Name = "Hidden"; Свойства1.Value = 0; Args.SetValue(0,Свойства1); Doc = Desktop.LoadComponentFromURL(ПривестиФайлКУРЛ(ФайлШаблона), "_blank", 0, Args); SearchDesc = Doc.CreateSearchDescriptor(); SearchDesc.SearchString = "["; SearchDesc1 = Doc.CreateSearchDescriptor(); SearchDesc1.SearchString = "]"; Found = Doc.FindFirst(SearchDesc); Found1 = Doc.FindFirst(SearchDesc1); Пока Found <> Неопределено Цикл Found = Doc.FindNext(Found.End, SearchDesc); Found1 = Doc.FindNext(Found1.End, SearchDesc1); НачПоз = Found.End; КонПоз = Found1.End; //вот здесь надо как-то считать текст между НачПоз и КонПоз, не пойму как и это comобъекты КонецЦикла; |
|||
12
Torquader
06.02.14
✎
11:05
|
(11) Там есть SearchRegularExpression, которое будучи поставленным в true позволяет использовать регулярные выражения.
Соответственно, в выражении нужно написать \[[^\[\]]{1,}\] или что-то подобное. https://wiki.openoffice.org/wiki/Documentation/How_Tos/Regular_Expressions_in_Writer |
|||
13
kn
06.02.14
✎
11:46
|
да, так должно получиться, только нужно получить тексты и положить их в списокзначений для дальнейшей обработки,как получить текст пробую
Found.Text но это comобъект, как до самих выражений [любой_текст] добраться? |
|||
14
kn
06.02.14
✎
13:04
|
Спасибо,получилось(строку получить Found.String),осталось для Word
|
|||
15
AquaKosh
06.02.14
✎
13:22
|
Один из возможных вариантов для MS Word:
Сами параметры в вордовском файле заключены в квадратные скобки. |
|||
16
kn
06.02.14
✎
14:00
|
Спасибо, для Word заработало!
|
|||
17
stran06
23.02.14
✎
17:52
|
Убираешь нафиг квадратные скобки. То, что нужно искать, просто выделяешь цветом, оно удобней и наглядней.
Втыкаешь такой код Find = ООДок.CreateReplaceDescriptor(); Find.SearchString=""; Ar=Новый COMSafeArray("VT_VARIANT",1); Par=Find.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Par.Name = "CharBackColor"; Par.Value = 16777113; И будет тебе щастя :) Подробней выложил в КЗ, только уже потерял. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |