Exemplo n.º 1
0
        /// <summary>
        /// Метод инициализации переменных.
        /// Возвращает хранилище переменных <see cref="VariablesStorage"/>
        /// </summary>
        /// <param name="dgvrCollection">Строки с таблицы со списком выражений на форме MainForm</param>
        /// <param name="newRowIndex">Индекс новой строки в таблице</param>
        /// <param name="loggingService">Сервис логирования</param>
        public static VariablesStorage initVariables(DataGridViewRowCollection dgvrCollection, int newRowIndex, LoggingService loggingService)
        {
            loggingService.logString("\n\n----------Ввод переменных:----------------\n");

            VariablesStorage variablesStorage = new VariablesStorage();

            bool processingTerminated = false;

            foreach (DataGridViewRow dgvr in dgvrCollection)
            {
                if (dgvr.Index == newRowIndex)
                {
                    break;
                }

                if (dgvr.Cells.Count != 2)
                {
                    loggingService.logError("Ошибка в строке " + dgvr.Index.ToString() + ": не все ячейки заполнены\n");
                    break;
                }

                if (dgvr.Cells[0].Value == null || dgvr.Cells[0].Value.ToString().Length == 0)
                {
                    loggingService.logError("Ошибка в строке " + dgvr.Index.ToString() + ": не задан идентификатор переменной\n");
                    processingTerminated = true;
                    break;
                }

                try
                {
                    string value = dgvr.Cells[1].Value.ToString();
                    if (value.StartsWith("\""))
                    {
                        FuzzyViewVariable fuzzyVariable = new FuzzyViewVariable(dgvr.Cells[0].Value.ToString(), value);
                        variablesStorage.fuzzyVariables.Add(fuzzyVariable);
                    }
                    else
                    {
                        int             intVariableValue = Convert.ToInt32(value);
                        IntViewVariable intVariable      = new IntViewVariable(dgvr.Cells[0].Value.ToString(), intVariableValue);
                        variablesStorage.intVariables.Add(intVariable);
                    }
                }
                catch (Exception)
                {
                    loggingService.logError("Ошибка в строке " + dgvr.Index.ToString() + ": значение переменной не задано или введено неверно\n");
                    processingTerminated = true;
                    break;
                }
            }

            if (!processingTerminated)
            {
                loggingService.logVariables(variablesStorage);
            }

            return(variablesStorage);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Метод получения значения представления переменной по алиасу
        /// </summary>
        /// <param name="identifier">Алиас переменной</param>
        /// <param name="variablesStorage">Хранилище переменных</param>
        public static object getValueFromVariablesStorage(string identifier, VariablesStorage variablesStorage)
        {
            foreach (IntViewVariable iv in variablesStorage.intVariables)
            {
                if (iv.name.Equals(identifier))
                {
                    return(iv.value);
                }
            }

            foreach (FuzzyViewVariable iv in variablesStorage.fuzzyVariables)
            {
                if (iv.name.Equals(identifier))
                {
                    return(iv.value);
                }
            }

            return(null);
        }