Czesć. Robię baze danych na plikach i mam problem z niepoprawnym usuwaniem elementów z pliku. Mianowicie:
public class produkt
{
public void usunProd(string nazwaProd)
{
string[] lines = File.ReadAllLines(sciezka, Encoding.GetEncoding("Windows-1250")); //Pobiera wszystkie wiersze pliku.txt
string[] produkt = new string[8]; //Tworzy tablica do splitu;
int pomId = lines.Length - 1; //Index pomocniczy do tablicy wyjsciowej
string[] wynik = new string[pomId]; //tablica wyjsciowa do ponownego zapisu
int wynikId = 0;//indeks pomocniczny do ponownego zapisu
for (int y=0;y<lines.Length;y++) //petla na wierszach pliku
{
produkt = lines[y].Split(';');
if (produkt[0]!=nazwaProd) //czy po splicie nazwa jest różna od parametru usunProd
{
wynik[wynikId] = lines[y]; //jezeli nie -> dodaj element do tablicy wyjsciowej
wynikId++;
}
}
File.WriteAllLines(sciezka, wynik); //zapis
MessageBox.Show("Usunięto trwale z bazy produkt o nazwie: " + nazwaProd);
}
}
Problem polega na tym, że skrypt działa niepoprawnie. Usuwa nie to co trzeba i dodaje dodatkowe puste wiersze
Wywołuje tą metode w ten sposób:
private void button10_Click(object sender, EventArgs e)
{
produkt removeProd = new produkt();
ListView.SelectedListViewItemCollection zaznaczone = this.listView3.SelectedItems;
foreach (ListViewItem item in zaznaczone)
{
listView3.Items.Remove(item);
removeProd.usunProd(item.SubItems[0].Text);
}
}
Z góry dziękuje za sugestie.