/// <summary> /// /// </summary> /// <param name="structure"></param> private void AddStructurToTable(ControllerStructVar structure) { DataRow m_row; m_row = this.StructsTable.NewRow(); m_row[0] = structure.Name; m_row[1] = structure.Address; m_row[2] = structure.Memory; m_row[3] = structure.Size; int m_addrass = structure.Address; this.StructsTable.Rows.Add(m_row); foreach (ControllerUserVar p in structure.Vars) { m_row = this.VarsTable.NewRow(); m_row[0] = p.Name; m_row[1] = structure.Name; m_row[2] = structure.Memory; m_row[3] = m_addrass + p.Address; m_row[4] = p.Size; m_row[5] = p.HasSign; this.VarsTable.Rows.Add(m_row); } }
/// <summary> /// Загрузка новых параметров /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void Update(ControllerProgramSolution solution, DebuggerEngine engine) { _engine = engine; if (solution != null) { _solution = solution; } else { _solution = ControllerProgramSolution.Create(_engine.Parameters.ProcessorType); } //Очистка значений переменных this.StructsTable.Rows.Clear(); this.VarsTable.Rows.Clear(); this.DisplayVarsTable.Rows.Clear(); this._freeStructs = new List <ControllerStructVar>(); this.clb_structurs.Items.Clear(); FillStuctursTables(); //Добваление структур, которых нет в проекте ControllerStructVar m_struct; ControllerUserVar m_var; foreach (DebuggerParameters.StructDescription sd in _engine.Parameters.ReadingStructs) { bool m_fined = false; foreach (DataRow dr in this.StructsTable.Rows) { if (dr[0].ToString() == sd.Name) { m_fined = true; break; } } if (m_fined) { continue; } m_struct = new ControllerStructVar(); m_struct.Address = sd.Address; m_struct.HasSign = sd.HasSign; m_struct.Memory = sd.MemoryType; m_struct.Name = sd.Name; m_struct.Size = sd.Size; foreach (DebuggerParameters.VarDescription vd in sd.Vars) { m_var = new ControllerUserVar(); m_var.Address = vd.Address; m_var.HasSign = vd.HasSign; m_var.Array = false; m_var.Memory = vd.MemoryType; m_var.Name = vd.Name; m_var.Size = vd.Size; m_struct.Vars.Add(m_var); } AddStructurToTable(m_struct); } FillCheckedList(); //Выбор структур для опроса List <DebuggerParameters.StructDescription> readStructs = new List <DebuggerParameters.StructDescription>(_engine.Parameters.ReadingStructs); _engine.Parameters.ReadingStructs = new List <DebuggerParameters.StructDescription>(); for (int i = 0; i < this.clb_structurs.Items.Count; i++) { foreach (DebuggerParameters.StructDescription sd in readStructs) { if (this.clb_structurs.Items[i].ToString() == sd.Name) { //this.clb_structurs_ItemCheck(this.clb_structurs, new ItemCheckEventArgs(i, System.Windows.Forms.CheckState.Checked, System.Windows.Forms.CheckState.Unchecked)); this.clb_structurs.SetItemCheckState(i, CheckState.Checked); } } } }