Снегопат
https://snegopat.ru/forum/

rex-v8. ВК для работы с регэкспами.
https://snegopat.ru/forum/viewtopic.php?f=5&t=444
Страница 3 из 8

Автор:  tormozit [ 15 апр 2013, 12:57 ]
Заголовок сообщения:  Re: rex-v8. ВК для работы с регэкспами.

Код:
аа = Новый ("V8RegEx");
аа.шаблон = "node6774 (?:([_ЁА-Яёа-яA-Za-z\d]+)|\(([_ЁА-Яёа-яA-Za-z\d]+)\))([^&_ЁА-Яёа-яA-Za-z\d]|^|$)";
Результат = аа.Execute("");

Такой код возвращает Неопределено. Почему?

Автор:  tormozit [ 15 апр 2013, 13:00 ]
Заголовок сообщения:  Re: rex-v8. ВК для работы с регэкспами.

Цитата:
аа = Новый ("V8RegEx");
аа.шаблон = "\d";
Результат = аа.Execute("");

Тоже возвращает Неопределено.

Автор:  orefkov [ 15 апр 2013, 13:03 ]
Заголовок сообщения:  Re: rex-v8. ВК для работы с регэкспами.

А надо matches с 0 элементами?

Автор:  tormozit [ 15 апр 2013, 13:05 ]
Заголовок сообщения:  Re: rex-v8. ВК для работы с регэкспами.

Цитата:
аа = Новый ("V8RegEx");
аа.шаблон = "\d";
Результат = аа.Execute("2");
бб = ТипЗнч(Результат);

Такой код вызывает аварийное завершение приложения при вычислении типа от Результат. Отладчик показывает Тип = "RegExMatches", что приятно.
Тип не определен 'f0cd1c9e-f075-49c7-97ef-332224575e6c'

Автор:  tormozit [ 15 апр 2013, 13:05 ]
Заголовок сообщения:  Re: rex-v8. ВК для работы с регэкспами.

orefkov писал(а):
А надо matches с 0 элементами?

Для совместимости и унификации надо конечно.

Автор:  orefkov [ 15 апр 2013, 13:13 ]
Заголовок сообщения:  Re: rex-v8. ВК для работы с регэкспами.

Проверь эту.

Автор:  tormozit [ 15 апр 2013, 13:25 ]
Заголовок сообщения:  Re: rex-v8. ВК для работы с регэкспами.

Спасибо. Теперь не падает. Теперь возвращает пустой RegExMatches вместо Неопределено.
Однако есть еще ряд багов.
Метод Replace выдает на выходе строку, в которой вставляется левая строка в самом начале "(?i)". Позже посмотрю подробнее.

Автор:  orefkov [ 15 апр 2013, 13:28 ]
Заголовок сообщения:  Re: rex-v8. ВК для работы с регэкспами.

Понял. Исправлю, не в ту строку вставлял флаг ignorecase.

Автор:  Magister [ 15 апр 2013, 14:24 ]
Заголовок сообщения:  Re: rex-v8. ВК для работы с регэкспами.

orefkov писал(а):
Magister писал(а):
Открой секрет, как из ВК вернуть объект? :)

Из native - никак вроде бы.
Из COM - возвращать IDispatch, обернутый в VARIANT.
Я точно не помню, реализацию в ВК уже давно не делал.

Это я знаю.
Я про ВК regex-v8, она ведь native. А в документации написано:
Цитата:
Метод Execute / Выполнить
Находит в исходной строке совпадения с регулярным выражением.
Синтаксис:
результат = объект.Execute(ПроверяемыйТекст);
Параметры:
ПроверяемыйТекст. Строка. Текст для проверки.
Возвращает: Объект RegExMatches.

Собственно вопрос - как ты возвращаешь Объект RegExMatches?

Автор:  orefkov [ 15 апр 2013, 14:35 ]
Заголовок сообщения:  Re: rex-v8. ВК для работы с регэкспами.

Дело в том, что объект V8RegEx - выполнен НЕ по технологии Native ВК.
ВК используется только в части загрузки в процесс 1С.
Дальше я уже дергаю методы движка 1С, регистрирую в системе типов 1С свой тип, и 1С работает с моим объектом - как со своими "родными" объектами.
То есть я расширяю объектную модель самой 1С.
А я, соответственно, имею доступ ко всем возможностям 1С, в том числе и возвращать объекты.
В 7.7 по этой технологии работали rainbow, 1C++, formex и прочие.
Там всего-то надо несколько интерфейсов реализовать.
Попозжа исходники открою.

Страница 3 из 8 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/