private void progressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) { if (e.UserState != null) { try { TabElement element = (TabElement)e.UserState; RichTextBox rtbTemp = new RichTextBox(); if (element.strList.Count > 0) { string[] strArr = element.strList.ToArray(); rtbTemp.AppendText(strArr[0]); rtbTemp.AppendText("\r\n"); rtbTemp.AppendText(strArr[1]); rtbTemp.AppendText("\r\n"); int start_idx = 2; while (start_idx + 16 < strArr.Length - 1) { rtbTemp.AppendText(String.Join(" ", strArr, start_idx, 16)); rtbTemp.AppendText("\r\n"); start_idx += 16; } int rest = strArr.Length - start_idx; if (rest > 0) { rtbTemp.AppendText(String.Join(" ", strArr, start_idx, rest)); } } tabResult.TabPages.Add(element.tabName, element.tabName); tabResult.TabPages[element.tabName].Controls.Add(rtbTemp); rtbTemp.Dock = DockStyle.Fill; scrollTab.Maximum = tabResult.TabPages.Count; } catch { MessageBox.Show("err"); } } progressBar1.Value = e.ProgressPercentage; }
private void DoInterprete(object sender, System.ComponentModel.DoWorkEventArgs e) { string path = (string)e.Argument; var fileStream = File.OpenRead(path); var streamReader = new StreamReader(fileStream, Encoding.UTF8); String line; int current_read = 0; int obj_size = 0; int size_cnt = 0; TabElement tempObj = null; string tabName; bool start = false; while ((line = streamReader.ReadLine()) != null) { if (line.Length == 0) { continue; } current_read = (int)streamReader.BaseStream.Position; try { if (line.ElementAt <char>(0) == '[') { start = false; string[] spt = line.Split('[', ']', ' ', '_'); if (spt.Length >= 3) { for (int cnt = 0; cnt < spt.Length; cnt++) { if (spt[cnt].Equals("INSTANCE")) { tabName = spt[cnt - 1] + "_" + spt[cnt + 1]; tempObj = new TabElement(tabName); start = true; } } } worker.ReportProgress(current_read, null); } else if (start) { if (tempObj != null) { if ((line.Length > 14) && (line.Substring(0, 14).Equals("OBJECT_ADDRESS"))) { tempObj.AppendText(line); worker.ReportProgress(current_read, null); } else if ((line.Length > 11) && (line.Substring(0, 11).Equals("OBJECT_SIZE"))) { tempObj.AppendText(line); obj_size = Convert.ToInt32(line.Split('=')[1]); size_cnt = 0; worker.ReportProgress(current_read, null); } else { string[] datas = line.Split(' ', '='); Int32 length = Convert.ToInt32(datas[1]); Int32 data = Convert.ToInt32(datas[3]); size_cnt += length; byte[] bytes = BitConverter.GetBytes(data); for (Int32 cnt = 0; cnt < length; cnt++) { tempObj.AppendText(bytes[cnt].ToString("X2")); } if (size_cnt == obj_size) { worker.ReportProgress(current_read, tempObj); } else { worker.ReportProgress(current_read, null); } } } } else { worker.ReportProgress(current_read, null); } } catch { MessageBox.Show("err22"); } } worker.ReportProgress((int)streamReader.BaseStream.Position, null); streamReader.Close(); fileStream.Close(); }