Показано с 1 по 9 из 9

Тема: Строковые функции языка ST в MasterScada

  1. #1

    По умолчанию Строковые функции языка ST в MasterScada

    Есть несколько вопросов по работе строковых функций:
    1. Функция FIND(Str1, Str2) должна бы, по идее, возвращать значение 0, если Str2 не найдена в Str1. Не возвращает, или, можно сказать, возвращает неправильно. А если Str2 = '.' возвращает 1 всегда, где бы эта точка не находилась. Если искать ',' и запятая есть в Str1, возвращается правильный номер в строке. Но если запятую из строки убрать, то возвращается номер позиции где запятая была. Ноль возвращать не хочет.

    2. Если на строковый вход скрипта ST вместо непустой строки подать пустую строку, то скрипт не обрабатывает её. Например, можно написать внутри скрипта функцию LEN(in_string), надеясь получить длину 0, но ничего подобного не произойдёт.

    Опрос объектов периодический. Почему пустые строки не обрабатываются? Замеченные особенности действительно имеют место быть или это я неправильно использую строковые функции?
    Вложения Вложения

  2. #2

    По умолчанию

    У нас все корректно. Попробуйте проверить на текущей Beta версии.
    Спасибо.

  3. #3

    По умолчанию

    У меня стояла версия 3.9.0.2484. Скачал с сайта версию 3.10.0.8093 3.10(RT32ReleaseMax)_19_02_01_23_46. В ней эти функции работают корректно. Спасибо за подсказку. А это и есть Beta версия? Или Beta лежит где-то в другом месте?

  4. #4
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Поиск подстроки всегда возвращает первое вхождение, при отсутствии указания позиции с какой начинать поиск.
    Если речь про точки, запятые и повторяющиеся данные.

    Мне так кажется...
    И вы собственно 1 получаете, что что-то найдено, нет ?

    з.ы. не знаток ST но обычно так, если реализация самого ST на языке другого уровня.
    Должно вернуть bool = true если нашел, и еще в некую переменную указать номер позиции первого вхождения.

  5. #5

    По умолчанию

    Цитата Сообщение от ks21 Посмотреть сообщение
    У меня стояла версия 3.9.0.2484. Скачал с сайта версию 3.10.0.8093 3.10(RT32ReleaseMax)_19_02_01_23_46. В ней эти функции работают корректно. Спасибо за подсказку. А это и есть Beta версия? Или Beta лежит где-то в другом месте?
    Beta лежит там же.
    Но если работает эта, то используйте ее
    Спасибо.

  6. #6

    По умолчанию

    [QUOTE=melky;306530]Поиск подстроки всегда возвращает первое вхождение, при отсутствии указания позиции с какой начинать поиск.
    Если речь про точки, запятые и повторяющиеся данные.

    Мне так кажется...
    И вы собственно 1 получаете, что что-то найдено, нет ?

    В функции FIND на языке ST два аргумента: FIND(строка в которой ищем, строка которую надо найти). Негде ей указать с какой позиции начать поиск. В версии Скады 3.9 FIND(строка, '.') всегда возвращала 1, независимо от того, где в строке точка и есть ли она вообще. В версии 3.10 функция работает правильно. А если что-то не найдено в языке ST должно возвращаться 0.

  7. #7
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Хм, че за странная функция на ST, а если у меня в строке 2 одинаковые записи, а мне нужна определенная ? или обработать одну, потом обработать следующую ?

  8. #8

    По умолчанию

    Ага. Вот такая странная функция. Из описания: "FIND(STR1, STR2) означает: найти позицию в строке STR1, где впервые встречается подстрока STR2." А дальше, если надо найти повторения, именно как Вы говорите - отрезать кусок строки с найденным включением, повторить поиск в оставшемся обрезке строки, и т. д. В принципе, элементарных строковых функций ST вполне хватает для несложной обработки строк. А для особо причудливых извращений есть C#.

  9. #9
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Я так понимаю, если ничего не нашла, FIND=0, если что-то нашла то FIND = число, начало позиции первого вхождения?

    может у вас там точка всегда на первой позиции ?

Похожие темы

  1. Вопрос по синтаксису языка ST
    от -=Vovka=- в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 22.10.2018, 11:30
  2. Ответов: 6
    Последнее сообщение: 09.02.2015, 08:29
  3. Функции.
    от Jonikk в разделе Программируемые реле
    Ответов: 11
    Последнее сообщение: 13.09.2011, 18:57
  4. трм-138 мат.функции
    от мастер в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 14.07.2008, 07:47
  5. Функции
    от mettled в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 13.02.2008, 10:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •