FileStream->Position gibt was Falsches aus



  • Ich möchte eine Datei öffnen sie lesen und ab einer bestimmten Stelle löschen.
    Es wird Zeile für Zeile ausgelesen und nachgeguckt ob der name mit der Eingabe des Benutzers übereinstimmen. So sieht der Text aus:

    Marco Mustermann
    1234/222333
    99999 Berlin, Falkenstraße 44
    1988 12 1
    Felix Mustermann
    1234/222333
    99999 Berlin, Falkenstraße 45
    1988 11 1

    Jetzt möcht ich zum Beispiel Felix löschen. Der Text wird einmal ganz eingelesen. Es wird in der Datei nachgeguckt wo der Name vorkommt, und die Position aufgezeichnet. Später formatiere ich den String, der den ganzen Text enthält, mit

    int anzahl = ende-start;
    Remove(start,anzahl);
    

    nur kommt 144 bei start und ende raus. Ich hab es nachgeprüft mit MessageBox. Könnt ihr mir helfen?

    String^ all = IO::File::ReadAllText("Adresse.txt");
    
    			IO::FileStream^ file = gcnew IO::FileStream("Adresse.txt",System::IO::FileMode::Open);
    
    			IO::StreamReader^ reader = gcnew IO::StreamReader(file);
    
    			int start = 0;
    			int ende = 0;
    
    			while(reader->Peek() >= 0){
    				start = Convert::ToInt32(file->Position);
    				String^ name = reader->ReadLine();
    				String^ tel = reader->ReadLine();
    				String^ an = reader->ReadLine();
    				String^ geb = reader->ReadLine();
    
    				if(name == Adresselöschen::textBox1->Text){
    					ende = Convert::ToInt32(file->Position);
    					reader->Close();
    					break;
    				}			
    			}
    


  • Readline bewegt den Zeiger im reader, nicht im File. Die Position wird sich daher im File nicht ändern.



  • Achso. Okay danke hab es anders gelöst 🙂


Anmelden zum Antworten