Есть ли оператор сравнения Like в языке Basic?

Автор eeigor, 23 января 2021, 21:55

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

eeigor

Похоже, что нет... Как сравнивать строки?
>>> InStr() ?
>>> StrComp() ?
+
Option VBASupport 1
Option Compatible
>>> InStrRev()
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

#1
Добрый день! Четыре в одном. :)

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)


Владимир.

mikekaganski

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

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

sokol92

Цитата: mikekaganski от 24 января 2021, 15:51Главное - не потерять баги

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

eeigor

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

UPD:
На "радостях" бросился проверять работу оператора "In"... Ан нет, не работает.  :(
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

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