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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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