Beispiel #1
0
 //Добавить модуль
 public void AddModule(string code)
 {
     if (!_modules.ContainsKey(code))
     {
         var smod = Project.SchemeModules[code];
         var mod  = new TablikModule(this, code, smod.Name, smod.Description);
         _modules.Add(code, mod);
         foreach (var m in smod.LinkedModules.Values)
         {
             AddModule(m);
             mod.LinkedModules.Add(_modules[m]);
         }
         foreach (var c in smod.LinkedConnects.Values)
         {
             if (Project.SchemeSources.ContainsKey(c))
             {
                 mod.LinkedSources.Add(Sources[c]);
             }
             if (Project.SchemeReceivers.ContainsKey(c))
             {
                 mod.LinkedReceivers.Add(Receivers[c]);
             }
         }
     }
 }
Beispiel #2
0
        public TablikCalcParam(TablikModule module, IRecordRead rec, bool isSubParam, bool isGenerated)
            : base(rec, isSubParam)
        {
            Module      = module;
            Keeper      = new TablikKeeper(this);
            IsGenerated = isGenerated;
            if (!Code.IsCorrectCode())
            {
                ErrMess     += "Указан недопустимый код расчетного параметра; ";
                IsFatalError = true;
            }

            CalcOn    = rec.GetBool("CalcOn");
            UserExpr1 = rec.GetString("UserExpr1", "");
            if (UserExpr1 == "")
            {
                ErrMess     += "Не заполнено расчетное выражение; ";
                IsFatalError = true;
            }
            UserExpr2 = rec.GetString("UserExpr2", "");
            if (UserExpr2 == "")
            {
                ErrMess     += "Не заполнено управляющее выражение; ";
                IsFatalError = true;
            }
            InputsStr = rec.GetString("Inputs");

            JoinToParamTree();
        }
Beispiel #3
0
 //Конструктор для тестов
 public TablikCalcParam(TablikModule module, string code, string expr1, string expr2 = "Расчет")
     : base(false)
 {
     Module    = module;
     Code      = code;
     UserExpr1 = expr1;
     UserExpr2 = expr2;
     Keeper    = new TablikKeeper(this);
 }
Beispiel #4
0
 //Определение порядка вычисления модулей
 internal void MakeModuleGraph(TablikModule m)
 {
     m.DfsStatus = DfsStatus.Process;
     foreach (var lm in m.LinkedModules)
     {
         if (lm.DfsStatus == DfsStatus.Before)
         {
             MakeModuleGraph(lm);
         }
         else if (lm.DfsStatus == DfsStatus.Process)
         {
             AddWarning("Циклическая зависимость модулей", null, lm.Code);
         }
     }
     ModulesOrder.Add(m);
     m.DfsStatus = DfsStatus.After;
 }