zeile aus file entfernen



  • Hi,

    dumme frage aber wie lösche ich eine Zeile aus einem File???

    Und zwar ich möchte aus einem File mit 7 Zeilen, die 5. löschen.
    In dem File selber soll, dann zwischen Zeile 4 und 6 keine leere Zeile sein, sonderen direkt nach der 4. soll die 6. folgen.

    Der inhalt der Zeile steht in einer cstring variablen.

    Danek für die Hilfe, mich würde es schon weiterbringen wenn ihr mir einen anstoss geben würdet... weiss nicht wie ich anfangen soll



  • Am schnellste geht: Auslesen, neu schreiben und dabei die zu löschende Zeile auslassen.
    Mit schnell meine ich nicht von ablauf des Programmes sondern vom Programmierauswand.



  • dabei kann ich aber nicht das gleiche file zweimal im selben ordner erstellen oder???

    ich müsste dann schon einen anderen Namen für das File nehmen



  • Ich würde an deiner Stelle entweder eine temporäre Datei anlegen oder CMemFile benutzen.



  • hi nochmal,

    ich wollte das jetzt so machen wie unix es sagte.
    Ich öffne die Files:
    1. ist das orginal
    2. Ist die zu erstellende kopie
    3. ist eine stoppwortliste, wenn ein wort in dieser und im orginal vorkommt soll es nicht in die kopie geschrieben werden.

    So aber leider habe ich mich total verfranzt im Code, vorhin (ich weiss nicht mwehr wie der Code aussah) schrieb er mir immer das erste wort aus dem orginal in die kopie, so lange wie die stoppwortliste ist

    Hier mal der Code ab der Stelle wo ich aus den beiden files lese und in das dritte schreiben möchte:

    ...
    
    while(old.ReadString(str))
    {
      while(stopp.ReadString(sw)  && teil ==  sw)
        {
    
    	int wert = str.Find(' '); 
    
    	teil = str.Left(wert);  
    	rest = str.Right(str.GetLength() - wert); 
    
    	if(teil != sw)
    	{
    
    	neu.WriteString(str);
    	neu.WriteString("\n");
    	}		
    
        }
    
    }
    
    ...
    

    Ich weiss dass das nich stimmen kann, aber wie gesagt stehe ich vor einer mauer und sehe kein Loch....

    Ach noch was der erste Teil des Stringes wir immer verglichen mit dem Stoppwort, aber wenn diese über einstimmen soll der ganze string nicht geschrieben werden oder wenn ungleich wird der String geschriben.



  • das ' != ' vergleicht doch auf ungleichheit der beiden strings oder????

    der schreibt saondern immer und alles in das File



  • Hi

    ich habe noch immer mit dem auslesen und dem danch folgendem schreiben probleme...
    irgendwie komme ich nicht drauf.

    Nach meinem bisherigen Code:

    while ( old.ReadString(str)    )
    {
    	while ( stopp.ReadString(sw) )
    	{
    
    	   int wert = str.Find(' '); 
    
    		teil = str.Left(wert); 
    		rest = str.Right(str.GetLength() - wert); 
    										teil.TrimRight();
    
            }
    
    	if(teil != sw)
    	{
    		neu.WriteString(str);
    		neu.WriteString("\n");
    	}
    }
    

    liest er nicht richtig das erste file aus....
    ER liesst immer nur den ersten String aus, aber aus dem zweiten alle Strings.
    Daher findet er auch nie einen string der '==' dem sw string ist, es sei den es steht an erster stelle.

    Es wäre schön wenn einer von euch mir mal einen hinweis geben könnte, wie ich es schaffe, dass aus dem ersten file jeder String nacheinader ausgelesen wird und zwischen durch dieser string mit dem string aus dem zweiten verglichen wird.
    DAnke


Anmelden zum Antworten