1453 lines
37 KiB
C#
1453 lines
37 KiB
C#
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<XianLuData> mListXianLuData = null;
|
||
|
||
public List<XianLuControl> mListXianLuControl = null;
|
||
|
||
public List<GanTas> 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<XianLuData>();
|
||
}
|
||
if (mListXianLuControl == null)
|
||
{
|
||
mListXianLuControl = new List<XianLuControl>();
|
||
}
|
||
if (mListGanTas == null)
|
||
{
|
||
mListGanTas = new List<GanTas>();
|
||
}
|
||
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] { "<XianLu>", "<Task>" };
|
||
string[] array2 = new string[2] { "</XianLu>", "</Task>" };
|
||
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("<XianLu>") < 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 == "<XianLu>"))
|
||
{
|
||
if (text5 == "<Task>")
|
||
{
|
||
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] { "<XianLu>", "<Task>" };
|
||
string[] array2 = new string[2] { "</XianLu>", "</Task>" };
|
||
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 == "<XianLu>")
|
||
{
|
||
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("<", "</"));
|
||
}
|
||
}
|
||
}
|
||
streamWriter.Close();
|
||
}
|
||
fileStream.Close();
|
||
}
|
||
return num;
|
||
}
|
||
|
||
public bool IsRepeatXianLuName(string _XianLuName)
|
||
{
|
||
bool result = false;
|
||
for (int i = 0; i < mListXianLuData.Count; i++)
|
||
{
|
||
if (mListXianLuData[i].mName_XianLu.Equals(_XianLuName))
|
||
{
|
||
result = true;
|
||
break;
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
public void Refresh_GanTaNumber_Label()
|
||
{
|
||
for (int i = 0; i < mListXianLuControl.Count; i++)
|
||
{
|
||
if (mListXianLuData[i].mGanTaNumber_XianLu != mListGanTas[i].mListGanTaData.Count)
|
||
{
|
||
mListXianLuData[i].mGanTaNumber_XianLu = mListGanTas[i].mListGanTaData.Count;
|
||
mListXianLuData[i].mStringGanTaNumber_XianLu = $"[{mListXianLuData[i].mGanTaNumber_XianLu}]个杆塔";
|
||
FormDesktop.MySetLabelText(mListXianLuControl[i].mGanTaNumber_XianLu_Label, mListXianLuData[i].mStringGanTaNumber_XianLu);
|
||
}
|
||
}
|
||
}
|
||
|
||
public void Refresh_Index_XianLu()
|
||
{
|
||
for (int i = 0; i < mListXianLuControl.Count; i++)
|
||
{
|
||
if (mListXianLuControl[i].mIndex__Control != i)
|
||
{
|
||
mListXianLuControl[i].mIndex__Control = i;
|
||
}
|
||
}
|
||
for (int j = 0; j < mListXianLuData.Count; j++)
|
||
{
|
||
if (mListXianLuData[j].mIndex__Data != j)
|
||
{
|
||
mListXianLuData[j].mIndex__Data = j;
|
||
}
|
||
}
|
||
}
|
||
|
||
public int MyLoadGanTa(string _filename)
|
||
{
|
||
int result = 0;
|
||
if (string.IsNullOrEmpty(_filename))
|
||
{
|
||
MyLog.AddLog("MyLoadGanTa() 参数1为空:杆塔数据文件名。");
|
||
return result;
|
||
}
|
||
if (!File.Exists(_filename))
|
||
{
|
||
MyLog.AddLog("MyLoadGanTa() 文件未找到! 文件名=" + _filename);
|
||
return result;
|
||
}
|
||
bool flag = false;
|
||
int i = -1;
|
||
int num = 0;
|
||
int num2 = 0;
|
||
double num3 = 0.0;
|
||
string[] array = new string[2] { "<GanTa>", "<XianLu>" };
|
||
string[] array2 = new string[2] { "</GanTa>", "</XianLu>" };
|
||
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<string, int> dictionary = new Dictionary<string, int>();
|
||
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 == "<GanTa>"))
|
||
{
|
||
if (text4 == "<XianLu>")
|
||
{
|
||
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] { "<GanTa>", "<XianLu>" };
|
||
string[] array2 = new string[2] { "</GanTa>", "</XianLu>" };
|
||
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 == "<GanTa>"))
|
||
{
|
||
if (text2 == "<XianLu>")
|
||
{
|
||
}
|
||
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("<", "</"));
|
||
}
|
||
}
|
||
streamWriter.Close();
|
||
}
|
||
fileStream.Close();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MyLog.AddLog("MySaveGanTa() 异常:" + ex.Message);
|
||
MessageBox.Show("异常:" + ex.Message);
|
||
}
|
||
return num;
|
||
}
|
||
}
|