fehler beim auslesen aus textdatei



  • hallo
    ich habe ein problem:
    ich überprüfe, ob eine textdatei vorhanden ist. wenn nicht, wird sie erstellt und schliesslich gleich den inhalt der textdatei ausgelesen.
    eigentlich sollte der inhalt ja gleich null sein, wenn die datei neu erstellt wird.
    leider erhalte ich nachdem ich die datei neu erstellt habe und auslese, ein zeichen zurück, nähmlich dieses: ◘ (einfach so ein kleines quadrat)

    wie könnte ich das verhindern?vielleicht müsste ich in der if bedingung if(datumaustextdatei == "") noch einen weitere bedinung hinzufügen, habe irengwie an die Länge von 'datumaustextdatei' gedacht!?denn 'datumaustextdatei' ist immer länger als 2 zeichen. so könnte ich diesen fall verhindern, dass dieses ◘-zeichen hineinkommt!

    ItemsCombo1 = ComboBox1->Text;
       dateiname = ItemsCombo1 + ".txt";
    
       ifstream myfile(dateiname.c_str());
    
       if(!myfile)
       {
    
            fopen(dateiname.c_str(),"w");
            ShowMessage("Datei wurde erstellt");
       }
    
       fopen(dateiname.c_str(),"r");
       char zeilen[100];
       myfile.getline(zeilen,100);
       datumaustextdatei = zeilen;
    
       if(datumaustextdatei == "")
       {
            ShowMessage("Kein Datum gefunden");
       }
       else
       {
            Edit1->Text = datumaustextdatei;
       }
    

    hat jemand eine idee??
    😋
    vielen dank

    cu


  • Mod

    Hallo

    was mir sofort aufgefallen ist

    2 X fopen nacheinander
    (mach nach dem Erstellen der Datei (fopen) noch ein fclose)

    MfG
    Klaus



  • das mit dem fclose habe ich probiert, leider weiss ich nicht was in die klammer kommt? fclose(...)?
    in der hilfe steht was von FILE, aber wenn ich fclose(dateiname) mache, gibt es einen fehler.

    das mit dem fopen(), einmal öffne ich es mit den berechtigungen "w" und einmal mit "r"!

    darf man das nicht?

    🙄

    vielen dank

    trade


  • Mod

    Hallo

    schau dir fopen in der Hilfe mal ganz genau an (Rueckgabewert)

    Aber warum verwendest du fopen, wenn du auf der anderen Seite Streams verwendest
    (besser nur Streams verwenden)

    MfG
    Klaus



  • hy klaus

    ich verwende fopen weil es mir somit gleich die datei erstellt, wenn sie noch nicht vorhanden ist!
    oder kann ich dies auch mit streams machen??

    das mit dem fclose() sollte klar sein!!vielen dank!!
    🙂

    trade


  • Mod

    Hallo

    verwende doch

    ofstream

    MfG
    Klaus



  • Bist du dir im klaren darüber, das du deine Datei bereits mit

    ifstream myfile(dateiname.c_str());
    

    öffnest?

    Versuchs mal so:

    ifstream myfile(dateiname.c_str());
    if(!myfile)
    {
       ShowMessage("Datei nicht geöffnet!");
       return;
    }
    
    getline(myfile, line); 
    if(line == "")
    {
       ShowMessage("Kein Datum!");
    }
    else
    {
       Edit1->Text = line;
    }
    

    Edit: Zum einlesen geht entweder nut ifstream, oder fstream mit ios::in 🙂
    Auslesen mit ofstream oder fstream ios::out oder ios::app



  • hy klaus

    du hattes recht, ich habe nun alles mit streams gemacht, nun läuft es!!
    vielen dank!

    trade.


Anmelden zum Antworten