Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben
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

Geschrieben

@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.

Geschrieben
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.
Geschrieben
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 :D

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

Geschrieben

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;

}

}

}

Geschrieben

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

Geschrieben

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?

Geschrieben

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.

Geschrieben

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...