public MemoryViewModel(IMemory memory) { this.memory = memory; page = new MemoryPage(); addresses = new Addresses(memory.Size - 0x100); Address = new Address(); Address.PropertyChanged += Address_PropertyChanged; Address.Maximum = memory.Size - 0x100; size = (int)memory.Size / 1024; fillingFactor = memory.FillingFactor; fillingFactorPercents = fillingFactor / (double)memory.Size * 100.0; }
private void _Update() { leftMemory = files[IndexOfTheSelectedLeftFile].memory; rightMemory = files[IndexOfTheSelectedRightFile].memory; List<long> addressesOfDifferences; if (Memory.Equals(leftMemory,rightMemory, out addressesOfDifferences)) { Status = Resources.FilesAreEquals; FilesAreEqual = true; Differences = ""; } else { Status = Resources.FilesAreNotEquals; FilesAreEqual = false; Differences = string.Format(Resources.Difference, addressesOfDifferences.Count); } addressesOfDiffPages = new SortedSet<long>(); foreach (var address in addressesOfDifferences) { addressesOfDiffPages.Add((address/Page.Size) * Page.Size); } if (!init) { init = true; leftPage = new MemoryPage(); rightPage = new MemoryPage(); addresses = new Addresses(leftMemory.Size - 0x100); Address = new Address(); Address.PropertyChanged += Address_PropertyChanged; Address.Maximum = leftMemory.Size - 0x100; AddressesOfDiffPages = new ObservableCollection<string>(); } AddressesOfDiffPages.Clear(); foreach (var address in addressesOfDiffPages) { var lenght = Address.Maximum.ToString("X").Length; AddressesOfDiffPages.Add(address.ToString("X" + lenght)); } IndexOfTheSelectedAddress = 0; Update(); }