private void CompareToFile(string filename)
{
if (Tools.Instance.m_symbols.Count > 0)
{
dockManager1.BeginUpdate();
try
{
DevExpress.XtraBars.Docking.DockPanel dockPanel = dockManager1.AddPanel(new System.Drawing.Point(-500, -500));
CompareResults tabdet = new CompareResults();
tabdet.ShowAddressesInHex = true;
tabdet.SetFilterMode(true);
tabdet.Dock = DockStyle.Fill;
tabdet.Filename = filename;
tabdet.onSymbolSelect += new CompareResults.NotifySelectSymbol(tabdet_onSymbolSelect);
dockPanel.Controls.Add(tabdet);
dockPanel.Text = "Compare results: " + Path.GetFileName(filename);
dockPanel.DockTo(dockManager1, DevExpress.XtraBars.Docking.DockingStyle.Left, 1);
dockPanel.Width = 500;
SymbolCollection compare_symbols = new SymbolCollection();
List<CodeBlock> compare_blocks = new List<CodeBlock>();
List<AxisHelper> compare_axis = new List<AxisHelper>();
compare_symbols = DetectMaps(filename, out compare_blocks, out compare_axis, false, false);
System.Windows.Forms.Application.DoEvents();
Console.WriteLine("ori : " + Tools.Instance.m_symbols.Count.ToString());
Console.WriteLine("comp : " + compare_symbols.Count.ToString());
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("SYMBOLNAME");
dt.Columns.Add("SRAMADDRESS", Type.GetType("System.Int32"));
dt.Columns.Add("FLASHADDRESS", Type.GetType("System.Int32"));
dt.Columns.Add("LENGTHBYTES", Type.GetType("System.Int32"));
dt.Columns.Add("LENGTHVALUES", Type.GetType("System.Int32"));
dt.Columns.Add("DESCRIPTION");
dt.Columns.Add("ISCHANGED", Type.GetType("System.Boolean"));
dt.Columns.Add("CATEGORY", Type.GetType("System.Int32")); //0
dt.Columns.Add("DIFFPERCENTAGE", Type.GetType("System.Double"));
dt.Columns.Add("DIFFABSOLUTE", Type.GetType("System.Int32"));
dt.Columns.Add("DIFFAVERAGE", Type.GetType("System.Double"));
dt.Columns.Add("CATEGORYNAME");
dt.Columns.Add("SUBCATEGORYNAME");
dt.Columns.Add("SymbolNumber1", Type.GetType("System.Int32"));
dt.Columns.Add("SymbolNumber2", Type.GetType("System.Int32"));
dt.Columns.Add("Userdescription");
dt.Columns.Add("MissingInOriFile", Type.GetType("System.Boolean"));
dt.Columns.Add("MissingInCompareFile", Type.GetType("System.Boolean"));
dt.Columns.Add("CodeBlock1", Type.GetType("System.Int32"));
dt.Columns.Add("CodeBlock2", Type.GetType("System.Int32"));
string category = "";
string ht = string.Empty;
double diffperc = 0;
int diffabs = 0;
double diffavg = 0;
int percentageDone = 0;
int symNumber = 0;
XDFCategories cat = XDFCategories.Undocumented;
XDFSubCategory subcat = XDFSubCategory.Undocumented;
if (compare_symbols.Count > 0)
{
CompareResults cr = new CompareResults();
cr.ShowAddressesInHex = true;
cr.SetFilterMode(true);
foreach (SymbolHelper sh_compare in compare_symbols)
{
foreach (SymbolHelper sh_org in Tools.Instance.m_symbols)
{
if ((sh_compare.Flash_start_address == sh_org.Flash_start_address) || (sh_compare.Varname == sh_org.Varname))
{
// compare
if (!CompareSymbolToCurrentFile(sh_compare.Varname, (int)sh_compare.Flash_start_address, sh_compare.Length, filename, out diffperc, out diffabs, out diffavg, sh_compare.Correction))
{
dt.Rows.Add(sh_compare.Varname, sh_compare.Start_address, sh_compare.Flash_start_address, sh_compare.Length, sh_compare.Length, sh_compare.Varname, false, 0, diffperc, diffabs, diffavg, category, "", sh_org.Symbol_number, sh_compare.Symbol_number, "", false, false, sh_org.CodeBlock, sh_compare.CodeBlock);
}
}
}
}
tabdet.CompareSymbolCollection = compare_symbols;
tabdet.OriginalSymbolCollection = Tools.Instance.m_symbols;
tabdet.OriginalFilename = Tools.Instance.m_currentfile;
tabdet.CompareFilename = filename;
tabdet.OpenGridViewGroups(tabdet.gridControl1, 1);
tabdet.gridControl1.DataSource = dt.Copy();
}
}
catch (Exception E)
{
Console.WriteLine(E.Message);
}
dockManager1.EndUpdate();
}
}