/// <summary> /// Функция, вызываемая при изменении пользователем текста в ячейке памяти. /// Помещает новое значение ячейки в память или выводит сообщение об ощибке, если введено некорректное число. /// </summary> /// <param name="row">Строка измененной ячейки.</param> /// <param name="collumn">Столбец измененной ячейки.</param> /// <param name="s">Строка, введенная в ячейку.</param> public void MemoryChanged(int row, int collumn, string s) { int num; try { num = Convert.ToInt32(s, 16); if (num > 255 || num < 0) { _forms.First()?.ShowMessage("Число должно быть от 0 до FF"); _forms.ForEach(x => x.SetMemory(row, collumn, MemoryHex(row, collumn))); return; } } catch { _forms.First()?.ShowMessage("Введено некорректное число"); _forms.ForEach(x => x.SetMemory(row, collumn, MemoryHex(row, collumn))); return; } var bitArray = new ExtendedBitArray(); CompilerSupport.FillBitArray(null, bitArray, num, 8); _memory[row * MemoryForm.ColumnCount + collumn] = bitArray; if (s.Length == 1) { s = "0" + s; } s = s.ToUpper(); _forms.ForEach(x => x.SetMemory(row, collumn, s)); }
public void VideomemoryChange(int row, int column, object o) { if (o == null) { _form2.ShowMessage("Должно быть введено число от 0 до FF"); _form2.SetMemory(row, column, VideomemoryHex(row, column)); return; } string s = o.ToString(); if (s.Length > 2) { _form2.ShowMessage("Должно быть введено число от 0 до FF"); _form2.SetMemory(row, column, VideomemoryHex(row, column)); return; } int num; try { num = Convert.ToInt32(s, 16); if (num > 255 || num < 0) { _form2.SetMemory(row, column, VideomemoryHex(row, column)); return; } } catch { _form2.ShowMessage("Должно быть введено число от 0 до FF"); _form2.SetMemory(row, column, VideomemoryHex(row, column)); return; } var bitArray = new ExtendedBitArray(); CompilerSupport.FillBitArray(null, bitArray, num, 8); _videomemory[row * VideomemoryForm.ColumnCount + column] = bitArray; if (s.Length == 1) { s = "0" + s; } s = s.ToUpper(); _form2.SetMemory(row, column, s); if (IsRedraw()) { ChangeTwoPixels(row, column); Draw(); } UpdateForm(); }
public void FillAddressTest() { var inputs = new List <int> { 8, 12, 43, 263 }; var lowOutputs = new List <ExtendedBitArray> { new ExtendedBitArray() { [3] = true }, new ExtendedBitArray() { [2] = true, [3] = true }, new ExtendedBitArray() { [5] = true, [3] = true, [1] = true, [0] = true }, new ExtendedBitArray() { [2] = true, [1] = true, [0] = true } }; var highOutputs = new List <ExtendedBitArray> { new ExtendedBitArray(), new ExtendedBitArray(), new ExtendedBitArray(), new ExtendedBitArray() { [0] = true } }; for (int i = 0; i < lowOutputs.Count; i++) { var highBitArray = new ExtendedBitArray(); var lowBitArray = new ExtendedBitArray(); CompilerSupport.FillBitArray(highBitArray, lowBitArray, inputs[i], 10); for (int j = 0; j < 8; j++) { Assert.AreEqual(lowOutputs[i][j], lowBitArray[j], $"low: i = {i}, j = {j}"); Assert.AreEqual(highOutputs[i][j], highBitArray[j], $"high: i = {i}, j = {j}"); } } }