Was mach ich falsch beim Löschen einer ganzen Zeile aus einer Datei?

zecken81

Mitglied
Hallo Leute,

Ich versuche schon seit Tagen vergeblich eine ganze Zeile aus einer existierenden Datei zu löschen, wenn eine bestimmte Bedingung auftritt.

Hab hier in der Forumsuche auch einiges gefunden aber der Fehler ist immer noch da :-(

Mein Programmcode sieht wie folgt aus:
if (cnt == 0) {
string[] zeile = File.ReadAllLines(INIDatei);
int zeile1 = zeile.Length;
string löschen = zeile[zeile1-1];
löschen.Remove(?)
}
In der INI Datei stehen in jeder Zeile 12 Zeichen die sich am Ende nur durch eine laufende Nr. unterscheiden. Wenn jetzt cnt== 0 ist wird wieder ein Eintrag gemacht und die laufende Nr. erhöht aber ich will das anschließend diese letzte Zeile wieder gelöscht wird.
Der String löschen enthät genau die Zeichenfolge welche gelöscht werden soll.
Die Zeile kann mal die 100. sein mal aber auch gleich die 1.
Hab auch schon bei Remove(...) was eingegeben aber der macht nichts der löscht nie was.

Hoffe mir kann jemand helfen.

Viel Spaß heute beim fusi gucken
 
Hallo Zecken81,

es gibt natürlich viele Möglichkeiten.
Am einfachsten zu lesen ist vielleicht:

C#:
if (cnt == 0)
{
    string[] zeile = File.ReadAllLines(INIDatei);
    string[] neuerInhalt;
    for (int i = 0; i < zeile.Length -1; i++)
    {
         neuerInhalt[i] = zeile[i];
    }
    File.WriteAllLines(INIDatei, neuerInhalt);
}
Gruß, Sparks
 
Hey danke für die schnelle Antwort allerdings bekomme ich da einen Fehler.
"Verwendung der nicht zugewiesenen lokalen Variablen neuerInhalt"

Habe dann gemacht string[] neuerInhalt = null;
bekomme dann aber die Fehlermeldung: System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.


Hast du da auch noch ein Tipp für?
 
Ok habs hinbekommen
Code:
string[] zeile =  File.ReadAllLines(INIDatei);
	int zeile1 = zeile.Length;
	string[] neu = new string[zeile1-1];
	
	for (int i = 0; i<zeile.Length-1;i++)
	{
		neu[i] = zeile[i];
	}
	File.WriteAllLines(INIDatei, neu);

ciao ciao
 
Genau (*sorry*), der Fehler war die Deklaration des neuen Arrays,
C#:
string[] neuerInhalt = new string[zeile.Length - 1];
Eleganter wäre eigentlich eine Collection, was aber aufs gleiche rausläuft...
 
Die Schleife für's Umkopieren könnte man sich sparen:
C#:
Array.Copy(zeile, neuerInhalt, neuerInhalt.Length);
Gruß
MCoder
 

Neue Beiträge

Zurück