LLpresident Geschrieben 9. September 2003 Geschrieben 9. September 2003 hey. ich hab folgendes problem: ich hab ne textdatei. diese soll geleert werden. dann will ich in diese textdatei etwas neues reinschreiben. quelltext: ofstream NichtGefiltert("c:\\Programme\\Borland\\CBuilder5\\Projects\\LogAuswerter_Abschluss\\Programm\\application_test.txt", ios::app); NichtGefiltert.clear(); while(Zeichen != EndOfLine) { Makiert.get(Zeichen); NichtGefiltert << Zeichen; } NichtGefiltert.close(); der befehl NichtGefiltert.clear(); funktioniert aber nicht. woran liegt das? ich bekomme nämlich keine fehlermeldung. Zitieren
Klotzkopp Geschrieben 9. September 2003 Geschrieben 9. September 2003 Wenn die Datei geleert werden soll, warum sagst du dann ios::app? Zitieren
Goos Geschrieben 9. September 2003 Geschrieben 9. September 2003 Original geschrieben von LLpresident der befehl NichtGefiltert.clear(); funktioniert aber nicht. woran liegt das? ich bekomme nämlich keine fehlermeldung. Ich glaub schon, dass der funktioniert. Allerdings setzt du damit nur deine Fehlerbits wieder zurueck. Goos Zitieren
LLpresident Geschrieben 9. September 2003 Autor Geschrieben 9. September 2003 @klotzkopp: weil ich sie in der while-schleife darunter neu füllen will. hm. und wie bekomme ich die datei dann leer? will nämlich mehere zeilen einlesen und für jede extra in die txt schreiben. dadurch das ich app benutze werden bei jedem aufruf die gleichen zeilen wieder reingeschirben. und das soll nicht passieren. deshalb will ich die textdatei bevor ich in sie schreibe leeren. Zitieren
Klotzkopp Geschrieben 9. September 2003 Geschrieben 9. September 2003 Original geschrieben von LLpresident dadurch das ich app benutze werden bei jedem aufruf die gleichen zeilen wieder reingeschirben.Nein. Dadurch wird an die bestehende Datei angehängt (app steht für "append" = anhängen). und das soll nicht passieren. deshalb will ich die textdatei bevor ich in sie schreibe leeren. Dann sag einfach nicht, dass du anhängen willst. ios::out | ios::trunc sollte es tun. Dann wird die Datei gleich beim Öffnen geleert. Zitieren
Goos Geschrieben 9. September 2003 Geschrieben 9. September 2003 Original geschrieben von LLpresident dadurch das ich app benutze werden bei jedem aufruf die gleichen zeilen wieder reingeschirben. und das soll nicht passieren. deshalb will ich die textdatei bevor ich in sie schreibe leeren. ...na jetzt muss ich aber schon mal lachen.....vielleicht hast dich aber auch nur ungluecklich ausgedrueckt Du sagst du nimmst die Option "Anhaengen" (Append) und beschwerst dich, weil dann jedes mal dein Text angehaengt wird. Deshalb willst du die Datei dann auch immer leeren. Is das wirklich dein Ernst? Koenntests ja auch mit nem ios::trunc probieren. Goos Zitieren
LLpresident Geschrieben 9. September 2003 Autor Geschrieben 9. September 2003 jep. es ist mein ernst. diese funktion wird für jede zeile einzeln aufgeruffen da ich nach bestimmten kriterien abfragen lasse. es wird also mehrmals in die funktion reingegangen wodurch ich durch benutzung von out auch nur die letzte zeile bekommen würde. brauche aber alle zeilen. hier die komplette funktion: void __fastcall TForm1::App_Filter_Checked() { Zaehler = 0; int Index; Index = 0; char const *Path_test = "c:\\Programme\\Borland\\CBuilder5\\Projects\\LogAuswerter_Abschluss\\Programm\\application_test.txt"; ifstream Makiert("c:\\Programme\\Borland\\CBuilder5\\Projects\\LogAuswerter_Abschluss\\Programm\\application_checked.txt", ios::in); while(!Makiert.eof()) { Zaehler++; Makiert.get(Zeichen); Zeile[0] = Zeile[1]; Zeile[1] = Zeile[2]; Zeile[2] = Zeichen; if(Zeichen == EndOfLine) { if(Zeile[0] == Checked[0] && Zeile[1] == Checked[1] && Zeile[2] == Checked[2]) { ifstream::pos_type pos = Makiert.tellg(); pos = pos - Zaehler; Makiert.seekg(pos); Makiert.get(Zeichen); ofstream NichtGefiltert("c:\\Programme\\Borland\\CBuilder5\\Projects\\LogAuswerter_Abschluss\\Programm\\application_test.txt", ios::app); NichtGefiltert.clear(); while(Zeichen != EndOfLine) { Makiert.get(Zeichen); NichtGefiltert << Zeichen; } NichtGefiltert.close(); clbApp_Gef_Fehler->Items->LoadFromFile(Path_test); } Zaehler = 0; } } } Zitieren
Goos Geschrieben 9. September 2003 Geschrieben 9. September 2003 Wieso oeffnest dein File denn ueberhaupt in der While Schleife? Es waere doch wohl sinvoller, wenn du das auch vor der Schleife machst und dafuer dann mit ios::out | ios::trunc. Dein NichtGefiltert kannst dann ja problemlos in der Schleife benutzen um deinen Text reinzuschieben. Goos Zitieren
Goos Geschrieben 9. September 2003 Geschrieben 9. September 2003 So ganz versteh ich aber wirklich nicht, was du willst. Wenn du deine Datei in der Schleife tatsaechlich leeren wuerdest, dann staende ja immer nur eine Zeile drin. Wo ist der Sinn dabei? Zitieren
LLpresident Geschrieben 9. September 2003 Autor Geschrieben 9. September 2003 ne. funktionierrt leider nicht. habs jetzt anders geregelt. die sache mit dem in der schleiffe leeren is mir auch schon aufgefallen. habs jetzt an den anfang gesetzt und etwas geschummelt. meine leerenkunktion sieht jetzt wie volgt aus: ofstream App_Leeren("c:\\Programme\\Borland\\CBuilder5\\Projects\\LogAuswerter_Abschluss\\Programm\\application_test.txt", ios::out); App_Leeren << ""; App_Leeren.close(); ist leider total unsauber aber mir fällt eht nichts besseres ein. und so funktioniert es auch wie ich es mir dachte. Zitieren
Goos Geschrieben 9. September 2003 Geschrieben 9. September 2003 Ich glaub ich werds nicht mehr raffen was du da machst. ...zu deinem File leeren: Ansich leerst du dein File am schnellsten ueber die DeleteFile() Funmktion Goos Zitieren
Klotzkopp Geschrieben 9. September 2003 Geschrieben 9. September 2003 Original geschrieben von Goos Ansich leerst du dein File am schnellsten ueber die DeleteFile() Funmktion *räusper* std::remove aus <cstdio> passt hier besser. Zitieren
LLpresident Geschrieben 9. September 2003 Autor Geschrieben 9. September 2003 cool. danke klotzkopp. die funktioniert. is damit weningstens etwas sauberer als vorher. sa das es sich auch sehen lassen kann. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.