using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; namespace LP; public class XianLu { public static object mLockObj; public FlowLayoutPanel mRQ = null; public Panel mPanel1st = null; public Label mLabelName1st = null; public Label mLabelJLZL1st = null; public Label mLabelDYDJ1st = null; public Label mLabelGanTa1st = null; public CheckBox mCheckBoxXianLu1st = null; public List mListXianLuData = null; public List mListXianLuControl = null; public List mListGanTas = null; public double mCurrent_a_All_GanTa = 0.0; public double mCurrent_b_All_GanTa = 0.0; public bool mCurrent_a_b_Ready = false; static XianLu() { mLockObj = null; mLockObj = new object(); } public XianLu() { MySet_RongQi(null); if (mListXianLuData == null) { mListXianLuData = new List(); } if (mListXianLuControl == null) { mListXianLuControl = new List(); } if (mListGanTas == null) { mListGanTas = new List(); } MyClear_ListXianLu(); } public void MySet_RongQi(FlowLayoutPanel _rq) { mRQ = _rq; } public void MyClear_ListXianLu() { mListXianLuData.Clear(); mListXianLuControl.Clear(); mListGanTas.Clear(); } public void Destroy() { mRQ.Controls.Clear(); for (int i = 0; i < mListXianLuControl.Count; i++) { mListXianLuControl[i].Dispose(); } for (int j = 0; j < mListGanTas.Count; j++) { mListGanTas[j].Dispose(); } MyClear_ListXianLu(); } public void MySet_Control1st(Panel _panel, Label _label_name, Label _label_jlzl, Label _label_DYDJ, Label _label_GanTa, CheckBox _checkBox_XianLu) { mPanel1st = _panel; mLabelName1st = _label_name; mLabelJLZL1st = _label_jlzl; mLabelDYDJ1st = _label_DYDJ; mLabelGanTa1st = _label_GanTa; mCheckBoxXianLu1st = _checkBox_XianLu; } public void Add1XianLuData(int _huiluNo, string _name_XianLu, string _jlzl_XianLu, int _dydj_XianLu, int _gantaNum_XianLu, int _id, int _pre1_LightingCurrent, int _pre2_DiShanMiDu, int _pre3_DiMianQingJiao, bool _isCreate = true) { int count = mListXianLuData.Count; XianLuData xianLuData = new XianLuData(); lock (mLockObj) { if (_isCreate) { xianLuData.SetXianLuData(count, XianLuData.mNextID_static, _huiluNo, _name_XianLu, _jlzl_XianLu, _dydj_XianLu, _gantaNum_XianLu, _pre1_LightingCurrent, _pre2_DiShanMiDu, _pre3_DiMianQingJiao); XianLuData.mNextID_static++; } if (!_isCreate) { xianLuData.SetXianLuData(count, _id, _huiluNo, _name_XianLu, _jlzl_XianLu, _dydj_XianLu, _gantaNum_XianLu, _pre1_LightingCurrent, _pre2_DiShanMiDu, _pre3_DiMianQingJiao); if (XianLuData.mNextID_static <= _id) { XianLuData.mNextID_static = _id + 1; } } } mListXianLuData.Add(xianLuData); CheckXianLuData_1Level("Add1XianLuData()", count); } private void CheckXianLuData_1Level(string _where, int _index) { if (_index < 0) { MyLog.AddLog($"[自查CheckXianLuData_1Level()] {_where} 参数2:_index={_index}"); return; } XianLuData xianLuData = mListXianLuData[_index]; string text = ""; if (xianLuData.mIndex__Data < 0) { text += $" mIndex__Data={xianLuData.mIndex__Data}"; } if (xianLuData.mID_XianLu <= 0) { text += $" mID_XianLu={xianLuData.mID_XianLu}"; } if (xianLuData.mName_XianLu.Equals("-1")) { text += " mName_XianLu=-1"; } if (xianLuData.mJLZL_XianLu.Equals("-1")) { text += " mJLZL_XianLu=-1"; } if (xianLuData.mDYDJ_XianLu < 0) { text += $" mDYDY_XianLu={xianLuData.mDYDJ_XianLu}"; } if (xianLuData.mStringDYDJ_XianLu.Equals("-1")) { text += " mStringDYDY_XianLu=-1"; } if (xianLuData.mGanTaNumber_XianLu < 0) { text += $" mGanTaNumber_XianLu={xianLuData.mGanTaNumber_XianLu}"; } if (xianLuData.mStringGanTaNumber_XianLu.Equals("-1")) { text += " mStringGanTaNumber_XianLu=-1"; } if (!string.IsNullOrEmpty(text)) { text = $"index={_index}" + text; MyLog.AddLog("[自查CheckXianLuData_1Level()] " + _where + " " + text); } } public void Add1XianLuControl(int _huiluNo, string _name_XianLu, string _JLZL_XianLu, int _dydj_XianLu, int _gantaNum_XianLu, int _id, int _pre1_LightingCurrent, int _pre2_DiShanMiDu, int _pre3_DiMianQingJiao, bool _isCreate = true) { Add1XianLuData(_huiluNo, _name_XianLu, _JLZL_XianLu, _dydj_XianLu, _gantaNum_XianLu, _id, _pre1_LightingCurrent, _pre2_DiShanMiDu, _pre3_DiMianQingJiao, _isCreate); int count = mListXianLuControl.Count; XianLuControl xianLuControl = new XianLuControl(); xianLuControl.mIndex__Control = count; xianLuControl.mID_Control = mListXianLuData[count].mID_XianLu; Panel panel = new Panel(); panel.Font = mPanel1st.Font; panel.Location = new Point(mPanel1st.Location.X, mPanel1st.Location.Y + count * (mPanel1st.Height + mPanel1st.Margin.All * 2)); panel.Size = mPanel1st.Size; panel.BorderStyle = mPanel1st.BorderStyle; panel.ContextMenuStrip = mPanel1st.ContextMenuStrip; panel.ContextMenuStrip.Tag = xianLuControl.mID_Control; for (int i = 0; i < panel.ContextMenuStrip.Items.Count; i++) { panel.ContextMenuStrip.Items[i].Tag = xianLuControl.mID_Control; } panel.Controls.Clear(); panel.Tag = xianLuControl.mID_Control; Label label = null; label = new Label(); label.Font = mLabelName1st.Font; label.Location = mLabelName1st.Location; label.AutoSize = true; label.Text = _name_XianLu; panel.Controls.Add(label); xianLuControl.mName_XianLu_Label = label; label = new Label(); label.Font = mLabelJLZL1st.Font; label.Location = mLabelJLZL1st.Location; label.AutoSize = true; label.Text = _JLZL_XianLu; panel.Controls.Add(label); xianLuControl.mJLZL_XianLu_Label = label; label = new Label(); label.Font = mLabelDYDJ1st.Font; label.Location = mLabelDYDJ1st.Location; label.AutoSize = true; label.Text = mListXianLuData[count].mStringDYDJ_XianLu; panel.Controls.Add(label); xianLuControl.mDYDJ_XianLu_Label = label; label = new Label(); label.Font = mLabelGanTa1st.Font; label.Location = mLabelGanTa1st.Location; label.AutoSize = true; label.Text = mListXianLuData[count].mStringGanTaNumber_XianLu; panel.Controls.Add(label); xianLuControl.mGanTaNumber_XianLu_Label = label; CheckBox checkBox = new CheckBox(); checkBox.Font = mCheckBoxXianLu1st.Font; checkBox.Location = mCheckBoxXianLu1st.Location; checkBox.AutoSize = true; checkBox.Text = mCheckBoxXianLu1st.Text; checkBox.CheckState = (mListXianLuData[count].mShow_XianLu ? CheckState.Checked : CheckState.Unchecked); checkBox.Tag = mListXianLuData[count].mID_XianLu; panel.Controls.Add(checkBox); xianLuControl.mShow_XianLu_CheckBox = checkBox; panel.Visible = true; xianLuControl.mPanel_XianLu = panel; mListXianLuControl.Add(xianLuControl); mRQ.Controls.Add(panel); CheckXianLuControl_1Level("Add1XianLuControl()", count); GanTas ganTas = new GanTas(); ganTas.SetXianLuData(mListXianLuData[count]); mListGanTas.Add(ganTas); } private void CheckXianLuControl_1Level(string _where, int _index) { if (_index < 0) { MyLog.AddLog($"[自查CheckXianLuControl_1Level()] {_where} 参数2:_index={_index}"); return; } XianLuControl xianLuControl = mListXianLuControl[_index]; string text = ""; if (xianLuControl.mIndex__Control < 0) { text += $" mIndex__Control={xianLuControl.mIndex__Control}"; } if (xianLuControl.mID_Control <= 0) { text += $" mID_Control={xianLuControl.mID_Control}"; } if (xianLuControl.mPanel_XianLu == null) { text += " mPanel_XianLu=null"; } if (xianLuControl.mName_XianLu_Label == null) { text += " mName_XianLu_Label=null"; } if (xianLuControl.mJLZL_XianLu_Label == null) { text += " mJLZL_XianLu_Label=null"; } if (xianLuControl.mDYDJ_XianLu_Label == null) { text += " mDYDY_XianLu_Label=null"; } if (xianLuControl.mGanTaNumber_XianLu_Label == null) { text += " mGanTaNumber_XianLu_Label=null"; } if (!string.IsNullOrEmpty(text)) { text = $"index={_index}" + text; MyLog.AddLog("[自查CheckXianLuControl_1Level()] " + _where + " " + text); } } public string Delete1_XianLuControl_and_XianLuData(int _index) { string result = "OK"; try { if (_index >= 0 && _index < mListGanTas.Count) { mListGanTas[_index].Dispose(); mListGanTas[_index] = null; mListGanTas.RemoveAt(_index); } if (_index >= 0 && _index < mListXianLuControl.Count) { mListXianLuControl[_index].Dispose(); mListXianLuControl[_index] = null; mListXianLuControl.RemoveAt(_index); } if (_index >= 0 && _index < mListXianLuData.Count) { mListXianLuData[_index].Destroy(); mListXianLuData[_index] = null; mListXianLuData.RemoveAt(_index); } } catch (Exception ex) { result = ex.Message; } return result; } public Panel GetLastXianLuControl_Panel() { Panel result = null; if (mListXianLuControl.Count == 0) { return result; } int num = -1; num = mListXianLuControl.Count - 1; return mListXianLuControl[num].mPanel_XianLu; } public XianLuData GetLastXianLuData() { XianLuData result = null; if (mListXianLuData.Count == 0) { return result; } int num = -1; num = mListXianLuData.Count - 1; return mListXianLuData[num]; } public Panel GetXianLuControl_Panel(int _index) { Panel result = null; if (_index < 0 || _index >= mListXianLuControl.Count) { MyLog.AddLog($"GetXianLuControl_Panel(_index) 参数1无效:{_index}"); return result; } return mListXianLuControl[_index].mPanel_XianLu; } public int MyLoadXianLu(string _filename) { int result = 0; if (string.IsNullOrEmpty(_filename)) { MyLog.AddLog("MyLoadXianLu(_fileName) 参数1为空:线路数据文件名。"); return result; } if (!File.Exists(_filename)) { MyLog.AddLog("MyLoadXianLu(_fileName) 文件未找到! 文件名=" + _filename); return result; } bool flag = false; int i = -1; int num = 0; int num2 = 0; string[] array = new string[2] { "", "" }; string[] array2 = new string[2] { "", "" }; string text = ""; string[] separator = new string[3] { "\r", "\n", "," }; string[] array3 = null; int num3 = 0; int num4 = 0; string text2 = ""; string text3 = ""; int num5 = 0; int num6 = 0; int num7 = 0; int num8 = 0; int num9 = 0; int num10 = 0; double num11 = 0.0; Encoding[] array4 = new Encoding[6] { Encoding.UTF8, Encoding.Default, Encoding.ASCII, Encoding.Unicode, Encoding.UTF7, Encoding.UTF32 }; int num12 = 0; bool flag2 = false; for (int j = 0; j < array4.Length; j++) { try { using FileStream fileStream = new FileStream(_filename, FileMode.Open, FileAccess.Read, FileShare.None); using (StreamReader streamReader = new StreamReader(fileStream, array4[j])) { text = streamReader.ReadToEnd().Trim(); if (string.IsNullOrEmpty(text) || text.IndexOf("线路") >= 0 || text.IndexOf("杆塔") >= 0) { num12 = j; flag2 = true; } streamReader.Close(); } fileStream.Close(); } catch (Exception) { } if (flag2) { break; } } using (FileStream fileStream2 = new FileStream(_filename, FileMode.Open, FileAccess.Read, FileShare.None)) { using (StreamReader streamReader2 = new StreamReader(fileStream2, array4[num12])) { while (!streamReader2.EndOfStream) { text = streamReader2.ReadLine().Trim(); if (string.IsNullOrEmpty(text)) { continue; } if (!flag) { for (i = 0; i < array.Length; i++) { if (text.IndexOf(array[i]) >= 0) { flag = true; num = 0; break; } } if (!flag || array[i].IndexOf("") < 0) { continue; } array3 = text.Split(separator, StringSplitOptions.RemoveEmptyEntries); if (array3.Length >= 3) { try { num11 = Convert.ToDouble(array3[1]); } catch (Exception) { num11 = 31.0; } mCurrent_a_All_GanTa = num11; try { num11 = Convert.ToDouble(array3[2]); } catch (Exception) { num11 = 2.8; } mCurrent_b_All_GanTa = num11; mCurrent_a_b_Ready = true; } else { mCurrent_a_b_Ready = false; } continue; } if (flag) { for (int k = 0; k < array2.Length; k++) { if (text.IndexOf(array2[k]) >= 0) { flag = false; i = -1; break; } } if (!flag) { continue; } } string text4 = array[i]; string text5 = text4; if (!(text5 == "")) { if (text5 == "") { num++; } continue; } array3 = text.Split(separator, StringSplitOptions.RemoveEmptyEntries); if (num == 0) { num7 = 0; } if (array3.Length >= 9) { try { num2 = Convert.ToInt32(array3[0]); } catch (Exception) { num2 = 1; } num4 = num2; try { num2 = Convert.ToInt32(array3[1]); } catch (Exception) { num2 = XianLuData.mNextID_static; } num3 = num2; text2 = array3[2].Trim(); text3 = array3[3].Trim(); try { num2 = Convert.ToInt32(array3[4]); } catch (Exception) { num2 = -1; } num5 = num2; try { num2 = Convert.ToInt32(array3[5]); } catch (Exception) { num2 = -1; } num6 = num2; try { num2 = Convert.ToInt32(array3[6]); } catch (Exception) { num2 = 0; } num8 = num2; try { num2 = Convert.ToInt32(array3[7]); } catch (Exception) { num2 = 0; } num9 = num2; try { num2 = Convert.ToInt32(array3[8]); } catch (Exception) { num2 = 0; } num10 = num2; Add1XianLuControl(num4, text2, text3, num5, num6, num3, num8, num9, num10); num7++; } else if (array3.Length >= 6) { try { num2 = Convert.ToInt32(array3[0]); } catch (Exception) { num2 = 1; } num4 = num2; try { num2 = Convert.ToInt32(array3[1]); } catch (Exception) { num2 = XianLuData.mNextID_static; } num3 = num2; text2 = array3[2].Trim(); text3 = array3[3].Trim(); try { num2 = Convert.ToInt32(array3[4]); } catch (Exception) { num2 = -1; } num5 = num2; try { num2 = Convert.ToInt32(array3[5]); } catch (Exception) { num2 = -1; } num6 = num2; Add1XianLuControl(num4, text2, text3, num5, num6, num3, 0, 0, 0); num7++; } else if (array3.Length == 5) { try { num2 = Convert.ToInt32(array3[0]); } catch (Exception) { num2 = 1; } num4 = num2; text2 = array3[1].Trim(); text3 = array3[2].Trim(); try { num2 = Convert.ToInt32(array3[3]); } catch (Exception) { num2 = -1; } num5 = num2; try { num2 = Convert.ToInt32(array3[4]); } catch (Exception) { num2 = -1; } num6 = num2; Add1XianLuControl(num4, text2, text3, num5, num6, XianLuData.mNextID_static, 0, 0, 0); num7++; } num++; } streamReader2.Close(); } fileStream2.Close(); } return num7; } public int MySaveXianLu(string _filename) { int result = 0; if (string.IsNullOrEmpty(_filename)) { MyLog.AddLog("MySaveXianLu(_fileName) 参数1为空:线路数据文件名。"); return result; } int num = 0; int num2 = -1; string[] array = new string[2] { "", "" }; string[] array2 = new string[2] { "", "" }; XianLuData xianLuData = null; using (FileStream fileStream = new FileStream(_filename, FileMode.Create, FileAccess.Write, FileShare.None)) { using (StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8)) { for (num2 = 0; num2 < array.Length; num2++) { string text = array[num2]; string text2 = text; if (text2 == "") { num = 0; streamWriter.WriteLine(XianLuData.MyHead_ToString()); streamWriter.WriteLine($"{array[num2]},{mCurrent_a_All_GanTa},{mCurrent_b_All_GanTa}"); for (int i = 0; i < mListXianLuData.Count; i++) { xianLuData = mListXianLuData[i]; streamWriter.WriteLine(xianLuData.MyToString()); num++; } if (num2 < array2.Length) { streamWriter.WriteLine(array2[num2]); } else { streamWriter.WriteLine(array[num2].Replace("<", "", "" }; string[] array2 = new string[2] { "", "" }; string text = ""; string[] separator = new string[3] { "\r", "\n", "," }; string[] array3 = null; GanTaData ganTaData = null; XianLuData xianLuData = null; int num4 = 0; int num5 = 0; string text2 = ""; Dictionary dictionary = new Dictionary(); dictionary.Clear(); bool flag2 = false; int index = 0; bool flag3 = false; Encoding[] array4 = new Encoding[6] { Encoding.UTF8, Encoding.Default, Encoding.ASCII, Encoding.Unicode, Encoding.UTF7, Encoding.UTF32 }; int num6 = 0; bool flag4 = false; for (int j = 0; j < array4.Length; j++) { try { using FileStream fileStream = new FileStream(_filename, FileMode.Open, FileAccess.Read, FileShare.None); using (StreamReader streamReader = new StreamReader(fileStream, array4[j])) { text = streamReader.ReadToEnd().Trim(); if (string.IsNullOrEmpty(text) || text.IndexOf("线路") >= 0 || text.IndexOf("杆塔") >= 0) { num6 = j; flag4 = true; } streamReader.Close(); } fileStream.Close(); } catch (Exception) { } if (flag4) { break; } } try { using FileStream fileStream2 = new FileStream(_filename, FileMode.Open, FileAccess.Read, FileShare.None); using (StreamReader streamReader2 = new StreamReader(fileStream2, array4[num6])) { while (!streamReader2.EndOfStream) { text = streamReader2.ReadLine().Trim(); if (string.IsNullOrEmpty(text)) { continue; } if (!flag) { for (i = 0; i < array.Length; i++) { if (text.IndexOf(array[i]) >= 0) { flag = true; num = 0; break; } } continue; } if (flag) { for (int k = 0; k < array2.Length; k++) { if (text.IndexOf(array2[k]) >= 0) { flag = false; i = -1; break; } } if (!flag) { continue; } } string text3 = array[i]; string text4 = text3; if (!(text4 == "")) { if (text4 == "") { num++; } continue; } array3 = text.Split(separator, StringSplitOptions.None); if (num == 0) { num4 = 0; } if (num == 0 && text.IndexOf("塔号") >= 0) { for (int l = 0; l < array3.Length; l++) { dictionary.Add(array3[l], l); } num++; num4 = 0; flag2 = true; continue; } if (array3.Length >= 65) { ganTaData = new GanTaData(); if (flag2) { for (int m = 0; m < array3.Length; m++) { text2 = dictionary.ElementAt(m).Key; num5 = dictionary.ElementAt(m).Value; if (array3[num5] == null) { num2 = 0; num3 = 0.0; } else { try { num2 = Convert.ToInt32(array3[num5].Trim()); } catch (Exception) { num2 = 1; } try { num3 = Convert.ToDouble(array3[num5].Trim()); } catch (Exception) { num3 = 1.0; } } switch (text2) { case "线路编号": ganTaData.mXianLuID = num2; break; case "序号": ganTaData.mIndex__GanTa = num2; break; case "线路名称": ganTaData.mXianLuName = array3[num5].Trim(); break; case "电压等级": ganTaData.mDYDJ_GanTa = num2; break; case "塔号": ganTaData.mID_GanTa = array3[num5].Trim(); break; case "杆塔模型": ganTaData.mModel_GanTa = array3[num5].Trim(); break; case "塔形": ganTaData.mTaXing_GanTa = array3[num5].Trim(); break; case "经度": ganTaData.mJingDu_GanTa = num3; break; case "纬度": ganTaData.mWeiDu_GanTa = num3; break; case "I回相序": ganTaData.mXiangXu1_GanTa = array3[num5].Trim(); break; case "II回相序": ganTaData.mXiangXu2_GanTa = array3[num5].Trim(); break; case "III回相序": ganTaData.mXiangXu3_GanTa = array3[num5].Trim(); break; case "IV回相序": ganTaData.mXiangXu4_GanTa = array3[num5].Trim(); break; case "A相是否安装避雷器": ganTaData.mBLQ_A_GanTa = array3[num5].Trim(); break; case "B相是否安装避雷器": ganTaData.mBLQ_B_GanTa = array3[num5].Trim(); break; case "C相是否安装避雷器": ganTaData.mBLQ_C_GanTa = array3[num5].Trim(); break; case "接地电阻": ganTaData.mJDDZ_GanTa = num3; break; case "左避雷中距m": ganTaData.mBLZJ_L_GanTa = num3; break; case "右避雷中距m": ganTaData.mBLZJ_R_GanTa = num3; break; case "避雷线高度m": ganTaData.mBLXGD_GanTa = num3; break; case "绝缘子串长度mm": ganTaData.mJYZCD_GanTa = num3; break; case "杆塔呼高m": ganTaData.mHuGao_GanTa = num3; break; case "I回上相中距m": ganTaData.m1ZJ_Shang_GanTa = num3; break; case "I回中相中距m": ganTaData.m1ZJ_Zhong_GanTa = num3; break; case "I回下相中距m": ganTaData.m1ZJ_Xia_GanTa = num3; break; case "I回上相高度m": ganTaData.m1GD_Shang_GanTa = num3; break; case "I回中相高度m": ganTaData.m1GD_Zhong_GanTa = num3; break; case "I回下相高度m": ganTaData.m1GD_Xia_GanTa = num3; break; case "II回上相中距m": ganTaData.m2ZJ_Shang_GanTa = num3; break; case "II回中相中距m": ganTaData.m2ZJ_Zhong_GanTa = num3; break; case "II回下相中距m": ganTaData.m2ZJ_Xia_GanTa = num3; break; case "II回上相高度m": ganTaData.m2GD_Shang_GanTa = num3; break; case "II回中相高度m": ganTaData.m2GD_Zhong_GanTa = num3; break; case "II回下相高度m": ganTaData.m2GD_Xia_GanTa = num3; break; case "III回上相中距m": ganTaData.m3ZJ_Shang_GanTa = num3; break; case "III回中相中距m": ganTaData.m3ZJ_Zhong_GanTa = num3; break; case "III回下相中距m": ganTaData.m3ZJ_Xia_GanTa = num3; break; case "III回上相高度m": ganTaData.m3GD_Shang_GanTa = num3; break; case "III回中相高度m": ganTaData.m3GD_Zhong_GanTa = num3; break; case "III回下相高度m": ganTaData.m3GD_Xia_GanTa = num3; break; case "IV回上相中距m": ganTaData.m4ZJ_Shang_GanTa = num3; break; case "IV回中相中距m": ganTaData.m4ZJ_Zhong_GanTa = num3; break; case "IV回下相中距m": ganTaData.m4ZJ_Xia_GanTa = num3; break; case "IV回上相高度m": ganTaData.m4GD_Shang_GanTa = num3; break; case "IV回中相高度m": ganTaData.m4GD_Zhong_GanTa = num3; break; case "IV回下相高度m": ganTaData.m4GD_Xia_GanTa = num3; break; case "小号侧档距": ganTaData.mXiaoHao_GanTa = num3; break; case "大号侧档距": ganTaData.mDaHao_GanTa = num3; break; case "电角度": ganTaData.mAngle_GanTa = num3; break; case "雷电流幅值a": ganTaData.mCurrent_a_GanTa = num3; break; case "雷电流幅值b": ganTaData.mCurrent_b_GanTa = num3; break; case "地面倾角1": ganTaData.mDMQJ1_GanTa = num3; break; case "地面倾角2": ganTaData.mDMQJ2_GanTa = num3; break; case "海拔m": ganTaData.mHaiBa_GanTa = num3; break; case "地形": ganTaData.mDiXing_GanTa = array3[num5].Trim(); break; case "地闪密度": ganTaData.mDSMD_GanTa = num3; break; case "直线或耐张杆塔": ganTaData.mZXNZ_GanTa = array3[num5].Trim(); break; case "绕击反击": ganTaData.mRaoJiFanJi_GanTa = num2; break; case "反击耐雷水平kA": ganTaData.mFJ_NLSP_GanTa = num3; break; case "反击跳闸率(次/100km.a)": ganTaData.mFJ_TZL_GanTa = num3; break; case "绕击耐雷水平kA": ganTaData.mRJ_NLSP_GanTa = num3; break; case "绕击跳闸率(次/100km.a)": ganTaData.mRJ_TZL_GanTa = num3; break; case "雷击风险等级": ganTaData.mFXDJ_GanTa = num2; break; case "原因分析": ganTaData.m_YuanYinFenXi_GanTa = array3[num5].Trim().Replace("\\r", "\r").Replace("\\n", "\n"); break; case "措施推荐": ganTaData.m_CuoShiTuiJian_GanTa = array3[num5].Trim().Replace("\\r", "\r").Replace("\\n", "\n"); break; } } } else if (!flag2) { for (num5 = 0; num5 < array3.Length; num5++) { if (array3[num5] == null) { num2 = 0; num3 = 0.0; } else { try { num2 = Convert.ToInt32(array3[num5].Trim()); } catch (Exception) { num2 = 1; } try { num3 = Convert.ToDouble(array3[num5].Trim()); } catch (Exception) { num3 = 1.0; } } switch (num5) { case 0: ganTaData.mXianLuID = num2; break; case 1: ganTaData.mIndex__GanTa = num2; break; case 2: ganTaData.mXianLuName = array3[num5].Trim(); break; case 3: ganTaData.mDYDJ_GanTa = num2; break; case 4: ganTaData.mID_GanTa = array3[num5].Trim(); break; case 5: ganTaData.mModel_GanTa = array3[num5].Trim(); break; case 6: ganTaData.mTaXing_GanTa = array3[num5].Trim(); break; case 7: ganTaData.mJingDu_GanTa = num3; break; case 8: ganTaData.mWeiDu_GanTa = num3; break; case 9: ganTaData.mXiangXu1_GanTa = array3[num5].Trim(); break; case 10: ganTaData.mXiangXu2_GanTa = array3[num5].Trim(); break; case 11: ganTaData.mXiangXu3_GanTa = array3[num5].Trim(); break; case 12: ganTaData.mXiangXu4_GanTa = array3[num5].Trim(); break; case 13: ganTaData.mBLQ_A_GanTa = array3[num5].Trim(); break; case 14: ganTaData.mBLQ_B_GanTa = array3[num5].Trim(); break; case 15: ganTaData.mBLQ_C_GanTa = array3[num5].Trim(); break; case 16: ganTaData.mJDDZ_GanTa = num3; break; case 17: ganTaData.mBLZJ_L_GanTa = num3; break; case 18: ganTaData.mBLZJ_R_GanTa = num3; break; case 19: ganTaData.mBLXGD_GanTa = num3; break; case 20: ganTaData.mJYZCD_GanTa = num3; break; case 21: ganTaData.mHuGao_GanTa = num3; break; case 22: ganTaData.m1ZJ_Shang_GanTa = num3; break; case 23: ganTaData.m1ZJ_Zhong_GanTa = num3; break; case 24: ganTaData.m1ZJ_Xia_GanTa = num3; break; case 25: ganTaData.m1GD_Shang_GanTa = num3; break; case 26: ganTaData.m1GD_Zhong_GanTa = num3; break; case 27: ganTaData.m1GD_Xia_GanTa = num3; break; case 28: ganTaData.m2ZJ_Shang_GanTa = num3; break; case 29: ganTaData.m2ZJ_Zhong_GanTa = num3; break; case 30: ganTaData.m2ZJ_Xia_GanTa = num3; break; case 31: ganTaData.m2GD_Shang_GanTa = num3; break; case 32: ganTaData.m2GD_Zhong_GanTa = num3; break; case 33: ganTaData.m2GD_Xia_GanTa = num3; break; case 34: ganTaData.m3ZJ_Shang_GanTa = num3; break; case 35: ganTaData.m3ZJ_Zhong_GanTa = num3; break; case 36: ganTaData.m3ZJ_Xia_GanTa = num3; break; case 37: ganTaData.m3GD_Shang_GanTa = num3; break; case 38: ganTaData.m3GD_Zhong_GanTa = num3; break; case 39: ganTaData.m3GD_Xia_GanTa = num3; break; case 40: ganTaData.m4ZJ_Shang_GanTa = num3; break; case 41: ganTaData.m4ZJ_Zhong_GanTa = num3; break; case 42: ganTaData.m4ZJ_Xia_GanTa = num3; break; case 43: ganTaData.m4GD_Shang_GanTa = num3; break; case 44: ganTaData.m4GD_Zhong_GanTa = num3; break; case 45: ganTaData.m4GD_Xia_GanTa = num3; break; case 46: ganTaData.mXiaoHao_GanTa = num3; break; case 47: ganTaData.mDaHao_GanTa = num3; break; case 48: ganTaData.mAngle_GanTa = num3; break; case 49: ganTaData.mCurrent_a_GanTa = num3; break; case 50: ganTaData.mCurrent_b_GanTa = num3; break; case 51: ganTaData.mDMQJ1_GanTa = num3; break; case 52: ganTaData.mDMQJ2_GanTa = num3; break; case 53: ganTaData.mHaiBa_GanTa = num3; break; case 54: ganTaData.mDiXing_GanTa = array3[num5].Trim(); break; case 55: ganTaData.mDSMD_GanTa = num3; break; case 56: ganTaData.mZXNZ_GanTa = array3[num5].Trim(); break; case 57: ganTaData.mRaoJiFanJi_GanTa = num2; break; case 58: ganTaData.mFJ_NLSP_GanTa = num3; break; case 59: ganTaData.mFJ_TZL_GanTa = num3; break; case 60: ganTaData.mRJ_NLSP_GanTa = num3; break; case 61: ganTaData.mRJ_TZL_GanTa = num3; break; case 62: ganTaData.mFXDJ_GanTa = num2; break; case 63: ganTaData.m_CuoShiTuiJian_GanTa = array3[num5].Trim().Replace("\\r", "\r").Replace("\\n", "\n"); break; case 64: ganTaData.m_YuanYinFenXi_GanTa = array3[num5].Trim().Replace("\\r", "\r").Replace("\\n", "\n"); break; } } } flag3 = false; for (int n = 0; n < mListXianLuData.Count; n++) { if (ganTaData.mXianLuName.Equals(mListXianLuData[n].mName_XianLu)) { flag3 = true; index = n; xianLuData = mListXianLuData[n]; break; } } if (!flag3) { num++; continue; } ganTaData.mXianLuID = xianLuData.mID_XianLu; ganTaData.mXianLuName = xianLuData.mName_XianLu; mListGanTas[index].Add1GanTaData(ganTaData); num4++; } num++; } streamReader2.Close(); } fileStream2.Close(); } catch (Exception ex6) { MyLog.AddLog("MyLoadGanTa() 载入杆塔文件发生异常。文件:" + _filename + "。异常:" + ex6.Message + "。"); MessageBox.Show(ex6.Message); } return num4; } public int MySaveGanTa(string _filename) { int result = 0; if (string.IsNullOrEmpty(_filename)) { MyLog.AddLog("MySaveGanTa(_fileName) 参数1为空:杆塔数据文件名。"); return result; } int num = 0; int num2 = -1; string[] array = new string[2] { "", "" }; string[] array2 = new string[2] { "", "" }; GanTaData ganTaData = null; try { using FileStream fileStream = new FileStream(_filename, FileMode.Create, FileAccess.Write, FileShare.None); using (StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8)) { for (num2 = 0; num2 < array.Length; num2++) { string text = array[num2]; string text2 = text; if (!(text2 == "")) { if (text2 == "") { } continue; } num = 0; streamWriter.WriteLine(array[num2]); streamWriter.WriteLine(GanTaData.MyHead_ToString()); for (int i = 0; i < mListGanTas.Count; i++) { if (mListGanTas[i] != null && mListGanTas[i].mListGanTaData != null && mListGanTas[i].mListGanTaData.Count != 0) { for (int j = 0; j < mListGanTas[i].mListGanTaData.Count; j++) { ganTaData = mListGanTas[i].mListGanTaData[j]; streamWriter.WriteLine(ganTaData.MyToString()); num++; } } } if (num2 < array2.Length) { streamWriter.WriteLine(array2[num2]); } else { streamWriter.WriteLine(array[num2].Replace("<", "