Как удалить выбранный элемент из поля со списком в текстовом файле

Итак, список в моем поле со списком исходит из текстового файла. Программа позволяет пользователю выбрать один элемент из списка. Выбранный элемент следует удалить из списка, а также из текстового файла, нажав кнопку.

Этот код позволяет программе получать элементы из текстового файла в мое поле со списком:

string location = @"C:\\Users\\LMCPENA98\\Desktop\\COE114LPROJECT_MILLENNIUM_PAWS\\MillenniumPaws\\MillenniumPaws\\bin\\Debug\\Files.txt";
string[] temp = File.ReadAllLines(location);
int[] TagNumber = new int[temp.Length];
string[] Breed = new string[temp.Length];
string[] Name = new string[temp.Length];
decimal[] Price = new decimal[temp.Length];
//Getting all the values i the text file
for (int i = 0; i < TagNumber.Length; i++)
{
TagNumber[i] = int.Parse(temp[i].Substring(0, temp[i].IndexOf("-")));
Breed[i] = temp[i].Substring(0, temp[i].IndexOf("+"));
Breed[i] = Breed[i].Substring(Breed[i].LastIndexOf("-") + 1);
Name[i] = temp[i].Substring(0, temp[i].IndexOf("="));
Name[i] = Name[i].Substring(Name[i].LastIndexOf("+") + 1);
Price[i] = decimal.Parse(temp[i].Substring(temp[i].LastIndexOf("=") + 1));
}

Pound p;
for (int i = 0; i < Breed.Length; i++)
{
if (Breed[i] == cmbBx_breed.Text)
 {
  p = new Pound(TagNumber[i], Name[i], Price[i]);
  cmbBx_opts.Items.Add(p.GetEntry());
  }
 }
}
else
{
cmbBx_breed.Text = null;
}

Вот как я сообщаю программе, что закончил выбор элемента:

private void btn_buy_Click(object sender, EventArgs e)
{
    new MessageBox_TYBuying().Show();
    cmbBx_opts.Items.Remove(cmbBx_opts.SelectedItem);
}

поэтому, когда я начал программировать, выбранный элемент в поле со списком теперь удален, но не в текстовом файле. Как это сделать??


person Lara P    schedule 28.06.2016    source источник
comment
Почему бы не использовать файл .json или файл .xml? Гораздо лучше и проще в использовании.   -  person Furtiro    schedule 28.06.2016
comment
Моя группа и я еще не знаем, как использовать такие файлы   -  person Lara P    schedule 28.06.2016


Ответы (2)


Нет такого понятия, как «удаление строки из текстового файла». Все, что вы можете сделать, это:

Подход 1)
Откройте исходный файл и либо прочитайте все строки в List<string>. Затем переберите все эти записи списка и удалите ту, которую нужно удалить. Затем запишите все записи списка обратно в файл.

Подход 2)
Переименуйте исходный файл в какой-нибудь "резервный" файл. Откройте файл резервной копии для чтения и новый файл с исходным именем для записи. Прочитайте файл резервной копии построчно. Запишите каждую строку в выходной файл, кроме строки, которую вы хотите удалить.

person Thorsten Dittmar    schedule 28.06.2016

С++ решение Win32

char deleteCharArray[50];
int index = SendDlgItemMessageA(hDlg, ID_COMBOFILE, CB_GETCURSEL, 0, 0);
SendDlgItemMessageA(hDlg, ID_COMBOFILE, CB_GETLBTEXT, index, (LPARAM)deleteCharArray);
SendDlgItemMessageA(hDlg, ID_COMBOFILE, CB_DELETESTRING, index, 0);
    
vector<string> dataArray;
ifstream myFile("fileName.txt");
     
string line;
while (getline(myFile, line))
{
    dataArray.push_back(line);
}
     
string deleteThis = string(deleteCharArray);
     
for (auto it = dataArray.begin(); it != dataArray.end(); ++it)
{
    if (deleteThis == *it)
    {
        dataArray.erase(it);
        break;
    }
}
     
ofstream outFile("fileName.txt");
ostream_iterator<std::string> output_iterator(outFile, "\n");
copy(dataArray.begin(), dataArray.end(), output_iterator);
    
person user13200372    schedule 12.12.2020