public static ScriptOutput AddInt(ScriptInput idx) { ScriptOutput so = new ScriptOutput(); so.SetValue("result", (Convert.ToInt32(idx.GetValue("d1")) + Convert.ToInt32(idx.GetValue("d2")))); idx.Write("AddInt结果:" + so.GetValue("result").ToString()); return(so); }
public static ScriptOutput AddFloat(ScriptInput idx) { ScriptOutput so = new ScriptOutput(); so.SetValue("result", Convert.ToDouble(idx.GetValue("f1")) + Convert.ToDouble(idx.GetValue("f2"))); idx.Write("AddFloat结果:" + so.GetValue("result").ToString()); return(so); }
/// <summary> /// 执行准确的函数 /// </summary> /// <param name="box"></param> protected void Dofunction(ItemBox box, WriteStreamCallBack wrs, IScriptLayout ml) { if (isStop) { throw new Exception("主动停止了脚本!"); } ml.SetFunctionBoxRun(box); ScriptInput si = new ScriptInput(); foreach (var item in box.InputDatas) { if (item.PIEnum != ParaItemEnum.INPUT) { si.SetValue(item.Name, GetValue(item as ParatItem)); } } ScriptOutput so = RunScript(box, si); //ScriptOutput so = null; ////////////////////////////////////待修改 if (so != null) { if (so.LogMessage != null && so.LogMessage.Equals("") == false) { wrs?.Invoke(so.LogMessage); } foreach (var item in box.OutDatas) { if (item.PIEnum != ParaItemEnum.OUTPUT) { item.Value = so.GetValue(item.Name); SetValue(item as ParatItem); } } } //检测是否需要断点停止 checkScriptRunForStopPoint(box, si, null); if (so != null) { so.Dispose(); so = null; } si.Dispose(); si = null; ml.SetFunctionBoxStop(box); }
/// <summary> /// 获取whilebox的迭代值 /// </summary> /// <param name="whilebox"></param> /// <param name="startidx"></param> /// <returns></returns> protected int GetWhileBoxIdx(ItemBox whilebox, int startidx) { int returnindex = 0; ScriptOutput soutidx = manager.GetValue(whilebox.Id); if (soutidx == null) { ScriptOutput whileboxidx = new ScriptOutput(); whileboxidx.SetValue("Idx", startidx); manager.SetValue(whilebox.Id, whileboxidx); returnindex = startidx; } else { int index = (int)soutidx.GetValue("Idx"); manager.GetValue(whilebox.Id).SetValue("Idx", index++); returnindex = index++; soutidx.SetValue("Idx", returnindex); } whilebox.OutDatas[0].Value = returnindex; SetValue(whilebox.OutDatas[0] as ParatItem); return(returnindex); }
/// <summary> /// 获取左值 /// </summary> /// <param name="pi"></param> /// <param name="sm"></param> /// <returns></returns> protected static object getValue(ParatItem pi, ScriptObjectManager sm) { if (pi.LinkIParatItem == null) { return(pi.Value); } else { if (pi.LinkIParatItem.ParentItemBox.BoxType == ItemBoxEnum.GETFUNCTION) { object reo = null; ScriptOutput so = (pi.LinkIParatItem.ParentItemBox as ItemBox).DoScriptFunction(null); reo = so.GetValue(pi.LinkIParatItem.Name); so.Dispose(); so = null; return(reo); } else { return(sm.GetValue(pi.LinkIParatItem.ParentItemBox.Id).GetValue(pi.LinkIParatItem.Name)); } } }