Формулы контроля вводимого значения

Стартовая страница Форумы Понять, как работает ПО Использование формул Формулы контроля вводимого значения

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Автор
    Сообщения
  • #37492
    manjey73
    Участник

    Чтобы не писать на каждый чих сделал такие формулы, с множителем и без

    public double CheckComm(double min, double max, double mult, string str = "" )
    {
    if (Cmd < min || Cmd > max) throw new Exception(string.Concat("Значение должно быть в пределах ", min.ToString(), " - ", max.ToString()," ", str));
    return Cmd*mult;
    }
    
    public double CheckComm1(double min, double max, string str = "" )
    {
    if (Cmd < min || Cmd > max) throw new Exception(string.Concat("Значение должно быть в пределах ", min.ToString(), " - ", max.ToString()," ", str));
    return Cmd;
    }

    Например во входной формуле у нас Cnl/10 — деление на 10, а при передаче надо умножить соответственно на 10.
    В выходной формуле пишем — CheckComm(16, 32, 10, "градусов")
    «Значение должно быть в пределах» — строка по умолчанию. В выходной формуле можно либо не указывать окончание фразы «градусов» и написать просто CheckComm(16, 32, 10) либо указать как выше с кавычками то, что вам нужно.
    Здесь 16 — минимально допустимое, 32 максимально допустимое, 10 — множитель, фраза чего.

    Либо использовать CheckComm1(16, 32, "градусов") в таком виде, где множитель 1.
    Если надо будет делить, то указываем соответственно 0.1, 0.01 и так далее

    #37494
    Mikhail
    Модератор

    Для формирования строк рекомендую использовать литералы.

    #37496
    manjey73
    Участник

    Я пробовал $» » — но была какая-то ошибка. Возможно что-то неправильно написал
    Кажется связано с { } — компилятор формул ругается. А мне надо было вставить значения min, max в строку

    #37497
    manjey73
    Участник

    if (Cmd < min || Cmd > max) throw new Exception($"Значение должно быть в пределах {min} - {max} {str}");

    Работает, видимо в первый раз допустил синтаксическую ошибку где-то.

    #37498
    JurasskPark
    Участник

    Работает, видимо в первый раз допустил синтаксическую ошибку где-то.

    И ExtScriptCompilerJP промолчал или вы им не пользуетесь?:)

    #37503
    manjey73
    Участник

    Практически не пользуюсь, по старинке.
    Недавно пользовался, для синтаксических ошибок, ибо опять забыл, как там компилировать и что подключать 🥺

    #37504
    manjey73
    Участник

    Просто у меня формулы, которые вызывают другие формулы, которые в свою очередь могут быть привязаны к каналам. Протестировать их в рамках расширения не особо представляется возможным.

    Например TON — формула таймера общая, для любого канала, а не набор таймеров под каждый канал, где мне нужен таймер типа Ton1029, Ton945 и так далее, полностью по сути повторяющие код.

    Пытаюсь делать формулы так, чтобы они не были зависимы от каналов, но при этом их можно было использовать в любом канале.

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Вы должны авторизироваться для ответа в этой теме.