Я создаю программное обеспечение для использования скрипта 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 без ошибок?
Спасибо за вашу помощь