none
Выполнение кода на JScript, написанного на C# RRS feed

  • Вопрос

  • Мне необходимо считать значение функции, вводимой с клавиатуры. С клавиатуры вводится функция, содержащая несколько неизвестных, которые представлены в виде элементов массива, например X[0]*X[3]-5*X[1].
    Значения переменных нам известны, поэтому необходимо сделать функцию, интерпретирующую тектовую функцию, подставляющую нужные значения и считающую выражение. Я это сделал через код на JScript. Но в моем выражении возникает ошибка 'Ожидалось ":" ' - исключения JScriptException. Помогите найти ошибку.

    private double FuncCalc()
        {
          var eng1 = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
          string bufStr = "{";
          for (int i = 0; i < X.Length; i++)
          {
            bufStr += X[i].ToString() + ",";
          }
          bufStr = bufStr.Substring(0, bufStr.Length - 1);
          bufStr += "}";
          //Оценивает и выполняет JScript код
          var result1 = Microsoft.JScript.Eval.JScriptEvaluate(
            @"
            var x =func(" + bufStr + @")
           function func(X)
           {
            return " + textBox3.Text +
           @"}; ", eng1);
          return Convert.ToDouble(result1);
        }

    • Перемещено Abolmasov Dmitry 18 ноября 2010 г. 21:05 (От:Настольные ПК)
    18 ноября 2010 г. 13:07

Ответы

  • 1) В примере X[0]*X[3]-5*X[1] у Вас пропущен индекс 2

    2) string bufStr = "{";

       for (int i = 0; i < X.Length; i++)
       {
        bufStr += X[i].ToString() + ",";
       }
       bufStr = bufStr.Substring(0, bufStr.Length - 1);
       bufStr += "}";

    Вместо фигурных скобок {} должны быть квадратные []


    Для связи [mail]
    • Помечено в качестве ответа Abolmasov Dmitry 23 ноября 2010 г. 11:30
    22 ноября 2010 г. 6:14

Все ответы