コード例 #1
0
        /// <summary>
        /// Работа с памятью.
        /// </summary>
        /// <param name="calc">Наш класс.</param>
        /// <param name="res">Результат предыдущей операции.</param>
        /// <param name="str">Номер ячейки памяти.</param>
        /// <param name="mm">Операции с мапятью.</param>
        /// <param name="resn">Извлекаемое из памяти значение.</param>
        /// <param name="syop">Текущая система счисления.</param>
        private static void Mem(Xryo calc, Object res, String str, MemActions mm, ref object resn, SystemOp syop)
        {
            try
            {
                var n = Convert.ToByte(str);
                // При работе с памятью переводим все к 10-ой системе счисления.
                resn = calc.SSConvert(res, syop, SystemOp.Dec);
// ReSharper disable once InconsistentNaming
                var _res = Convert.ToDouble(resn);
                try
                {
                    calc.Memory(mm, ref _res, n);
                }
                // Если операция была М+ или М-, а память пуста.
                catch
                {
                    switch (mm)
                    {
                    case MemActions.MP:
                        calc.Memory(MemActions.MS, ref _res, n);
                        break;

                    case MemActions.MM:
                        _res = -_res;
                        calc.Memory(MemActions.MS, ref _res, n);
                        break;

                    default:
                        ErrorEvent("Ошибка памяти!");
                        break;
                    }
                }
                // Если необходимо извлечь значение из памяти.
                if (mm == MemActions.MR)
                {
                    resn = calc.SSConvert(_res, SystemOp.Dec, syop);
                }
            }
            catch { ErrorEvent("Ошибка памяти!"); }
        }
コード例 #2
0
        /// <summary>
        /// Разбор нажатых кнопок памяти.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnmem_Click(object sender, EventArgs e)
        {
            var conv = tb1.Text;
            var btn  = (Button)sender;

            switch (btn.Text)
            {
            case "MC":
                _mem = MemActions.MC;
                Mem(Calc, conv, "0", _mem, ref _resn, _syop);
                lbl_mem.Visible = false;
                break;

            case "MR":
                _mem = MemActions.MR;
                Mem(Calc, conv, "0", _mem, ref _resn, _syop);
                tb1.Text = Convert.ToString(_resn);
                break;

            case "MS":
                _mem = MemActions.MS;
                Mem(Calc, conv, "0", _mem, ref _resn, _syop);
                lbl_mem.Visible = true;
                break;

            case "M+":
                _mem = MemActions.MP;
                Mem(Calc, conv, "0", _mem, ref _resn, _syop);
                lbl_mem.Visible = true;
                break;

            case "M-":
                _mem = MemActions.MM;
                Mem(Calc, conv, "0", _mem, ref _resn, _syop);
                lbl_mem.Visible = true;
                break;
            }
        }