Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

20 Апрель 2021, 15:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Есть ли оператор сравнения Like в языке Basic?  (Прочитано 524 раз)
0 Пользователей и 1 Гость смотрят эту тему.
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 514



« Стартовое сообщение: 23 Январь 2021, 21:55 »

Похоже, что нет... Как сравнивать строки?
>>> InStr() ?
>>> StrComp() ?
 +
Option VBASupport 1
Option Compatible
>>> InStrRev()
« Последнее редактирование: 23 Январь 2021, 22:17 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 379


WWW
« Ответ #1: 24 Январь 2021, 14:22 »

Добрый день! Четыре в одном. Улыбка

1. Like - оператор невидимка. В текущей документации его нет (или тщательно спрятан). Насколько точно соотвествует спецификации Excel - предмет отдельного исследования.

2. Instr. При регистронезависимом поиске некорректно работает с нелатинскими буквами.

3. Strcomp. В текущей версии замечаний нет. Однако параметр Compare там почему-то не такой, как в аналогичных функциях (и в Excel). При переносе из/в Excel крайне неудобно.

4. InStrRev. Работает только при VBASupport 1. Реализация функции не соответствует документации - параметр Compare по умолчанию 0, а не 1. При регистронезависимом поиске некорректно работает с нелатинскими буквами.

Про баг в InStr написал, про InstrRev сообщу, когда выйдет версия 7.1.

Как временное решение - при регистронезависимом поиске использую конструкции вида:
 
Код:
  Instr(1, lcase(text1), lcase(text2), 0)


« Последнее редактирование: 24 Январь 2021, 14:41 от sokol92 » Записан

Владимир.
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 053


« Ответ #2: 24 Январь 2021, 15:51 »

Писать надо про все четыре. Четыре отдельных бага. Один - про отсутствие справки, один - про две функции, не сравнивающие нелатинские буквы, и два - про несоответствие в двух функциях параметров (по крайней мере при VBASupport они должны соответствовать).

Когда сообщать - Вам решать. После выхода 7.1 - ок. Главное - не потерять баги.
Записан

С уважением,
Михаил Каганский
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 379


WWW
« Ответ #3: 24 Январь 2021, 16:00 »

Главное - не потерять баги

Здравствуйте, Михаил! Куда они (баги) денутся? Если, конечно, Вы их не исправите. Улыбка
Записан

Владимир.
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 514



« Ответ #4: 24 Январь 2021, 17:07 »

Like - оператор невидимка.
Вот это да!!
Like: Проверил - работает! Никогда б не догадался, ибо прошерстил всю документацию (как болван, нет чтобы попробовать...). И это без всяких опций совместимости с VBA.
Ставлю себе "плюсик" за поставленный вопрос.
Остаётся решить: использовать или не использовать.
@sokol92, спасибо за обзор!

UPD:
На "радостях" бросился проверять работу оператора "In"... Ан нет, не работает.  Грустный


* Снимок экрана от 2021-01-24 17-11-20.png (11.13 Кб, 437x152 - просмотрено 12 раз.)
« Последнее редактирование: 24 Январь 2021, 17:28 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 379


WWW
« Ответ #5: 24 Январь 2021, 18:47 »

В VBA оператора "In" никогда не было, это из других языков (SQL, ...).
Записан

Владимир.
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!