IronPython: SetVariable array2D в c # - PullRequest
       32

IronPython: SetVariable array2D в c #

0 голосов
/ 18 октября 2018

Я создаю программное обеспечение для использования скрипта Python (IronPython) в c #.Код:

using IronPython.Hosting;
using IronPython.Runtime;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
...
...
    private void RunScript()
    {
        ScriptEngine engine;
        ScriptRuntime runtime;
        ScriptSource source = null;
        ScriptScope scope;
        MemoryStream ms = new MemoryStream();

        try
        {
            engine = Python.CreateEngine();
            runtime = engine.Runtime;
            runtime.IO.SetOutput(ms, Encoding.ASCII);
        }
        catch (Exception ex)
        {
            pythonResult.AppendText("Initialization IronPython: " + ex.Message);
            return;
        }

        try
        {
            source = engine.CreateScriptSourceFromString(CodeTextBox.Text, SourceCodeKind.AutoDetect);
            scope = runtime.CreateScope();

            float[,] array2D = new float[10, 10];
            scope.SetVariable("var2", array2D);

            CompiledCode compil = source.Compile();
            compil.Execute(scope);

            byte[] arr_byte = ms.ToArray();
            string text = Encoding.ASCII.GetString(arr_byte);
            pythonResult.AppendText(text);
        }
        catch (Exception ex)
        {
            pythonResult.AppendText("Code error: " + ex.Message + "\n");
            return;
        }
    }

Когда я начинаю интерпретировать код:

for i in range(1, 10):
  for j in range(1, 10):
     var2[i,j] = 15.20

Я получаю следующую ошибку: Не удается расширить от типа источника до типа назначения либо, потому что источникне примитивный тип или преобразование не может быть выполнено.

Я заметил, что компиляция не возвращает ошибки, когда:

for i in range(1, 10):
  for j in range(1, 10):
     var2[i,j] = integer number (example var2[i,j] = 15)

Почему эта ошибка?

есть ли способ назначить значение с плавающей точкой для var2 без ошибок?

Спасибо за вашу помощь

...