メソッドDeleteTesterは、TestingCompany.txtから選択したテスターの行を削除する必要があります。 テスターが既にEquipmentテスターに割り当てられている場合、削除しないでください。c#elseが正しく動作しない場合
マイコードが正しく機能しません。テスターが機器に割り当てられると、「このテスト会社は機器に割り当てられています」というエラーメッセージが表示され、テスターが削除されます。テスターは削除しないでください。
public void DeleteTester(string testerData)
{
string line_to_delete = testerData;
string[] line_to_Delete_Array= theEntity.setString(line_to_delete);
string testerToDelete = line_to_Delete_Array[0];
foreach (var line in File.ReadLines(@"C:\\Temp\\Equipment.txt"))
if (line.EndsWith(testerToDelete, StringComparison.CurrentCultureIgnoreCase))
{
MessageBox.Show("This testing company is assigned to Equipment", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
string strFilePath = @"C:\\Temp\\TestingCompany.txt";
string strSearchText = testerData;
string strOldText;
string n = "";
StreamReader sr = File.OpenText(strFilePath);
while ((strOldText = sr.ReadLine()) != null)
{
if (!strOldText.Contains(strSearchText))
{
n += strOldText + Environment.NewLine;
}
}
sr.Close();
File.WriteAllText(strFilePath, n);
}
}
方法のsetStringは
public string[] setString(string newString)
{
sString = newString;
setStrings = sString.Split(',');
return setStrings;
}
機器ファイルファイルの行から配列を返す "" 区切りで情報を持っている
1,voltmeter,25/07/2017,1
2,multimeter,31/08/2017,2
3,ampermeter,31/07/2016,3
4,voltmeter,29/08/2016,1
テスト企業のファイルデータ
1,Testing Ltd,2 New North Rd,Auckland,2678
2,Q Testing Ltd, 4 Dominion Street,Auckland,5678
3,Metrology Limited,2 Dominos St,Christchurch,3456
デルeteTester()
private void btnDeleteTester_Click(object sender, EventArgs e)
{
string deleteTester = lstTestingCompanies.GetItemText(lstTestingCompanies.SelectedItem);
theController.DeleteTester(deleteTester);
}
deleteTesterは、それが動作するデータ1,Testing Ltd,2 New North Rd,Auckland,2678
固定コードを持っていますが、それだけのパターンであり、それはよく
public void DeleteTester(string testerData)
{
string line_to_delete = testerData;
string[] line_to_Delete_Array = theEntity.setString(line_to_delete);
string testerToDelete = line_to_Delete_Array[0];
string[] checkEquipment = File.ReadAllLines(@"C:\\Temp\\Equipment.txt");
foreach (string s in checkEquipment)
{
string[] TesterToDelete = theEntity.setString(s);
if (Convert.ToInt32(TesterToDelete[3]) == Convert.ToInt32(testerToDelete))
{
MessageBox.Show("This testing company is assigned to Equipment", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
flag = 1;
break;
}
}
if (flag != 1)
{
string strSearchText = testerData;
string strOldText;
string n = "";
StreamReader sr = File.OpenText(@"C:\\Temp\\TestingCompany.txt");
while ((strOldText = sr.ReadLine()) != null)
{
if (!strOldText.Contains(strSearchText))
{
n += strOldText + Environment.NewLine;
}
}
sr.Close();
File.WriteAllText(@"C:\\Temp\\TestingCompany.txt", n);
}
}
プログラムをデバッグするとき、 'line'の値は何ですか?' testerToDelete'の値は何ですか? – Jasen
サンプルデータエントリを投稿する – iceDragon
はい、両方のファイルのサンプルデータと予想される最終結果を投稿してください。 – Sach