Beispiel #1
0
        /// <summary>
        /// Удаление данных
        /// </summary>
        /// <param name="addr"></param>
        /// <param name="size"></param>
        public void RemoveBuffer(UInt32 addr, int size)
        {
            while (size > 0)
            {
                // Поиск расположения данных в 64к регионах
                IntelHexRegion region = SearchRegion(addr);
                int            removeSize;

                // Регион не существует для текущего адреса
                if (region != null)
                {
                    // Удаление данных из региона
                    removeSize = region.Remove(addr, size);

                    if (removeSize == 0)
                    {
                        // Данных нет для удаления: Переход к следующему региону
                        removeSize = IntelHexRegion.REGION_SIZE;
                    }
                    else
                    {
                        // Данные удалены из региона: Возможно регион тоже нужно удалить
                        // т.к. он может уже не содержать данных
                        if (region.IsEmpty)
                        {
                            RemoveRegion(region);
                        }
                    }
                }
                else
                {
                    // Регион не существует: Переход к следующему адресу через регион
                    removeSize = IntelHexRegion.REGION_SIZE;
                }

                size -= removeSize;
                addr += (UInt32)removeSize;
            } // end while (поиск адресов)
        }