Existenztest der Txt-datei ...



  • Hi alle zusammen!

    Warum funktioniert mein Existenztest nicht richtig !? Man soll den
    Dateinamen eingeben und wenn die Datei vorhanden ist wird eine Meldung
    ausgegeben und wenn sie nicht vorhanden ist auch.
    Doch irgendwie kommt überhaubt keine Meldung ..... egal ob die Datei existiert oder nicht 😕
    Mein Compiler gibt mir auch keine Fehlermeldung.
    hab schon alles abgesucht nach möglichen Fehlern .... ich hoffe ihr könnt mir helfen.

    Hier ein Ausschnitt aus dem Quellcode( habe jetzt nur mal die betroffene Stelle genommen, wo der Fehler sein müsste.)

    ...
    ...
    ...
    
    	case 3:
    
    		cout << "\nNotizbuch: "   << endl;
    		cout << "---------------" << endl;
    
            cout << "\nOptionen:"                          << endl;
    
    		cout << "(1)-- Notiz schreiben"                << endl;
    		cout << "(2)-- Notizen öffnen   "              << endl;
    
    		cout << "\nGeben sie ihre Option ein:"         << endl;
    
    		cin  >> Wert;
    
    		if(Wert == 1)
    
    		{
    
                char Notizen[128];
    
    			ifstream Test;
    
    			cout << "Dateiname:" << flush;
    
    			cin.getline(Notizen,127,'*');
    
    			Test.open(Notizen,ios_base::in);
    
    			if (Test.good())
    
    			{
    
    				cout << "\nDie Txt-Datei zur speicherung der Daten ist vorhanden ..."<< endl;
    				cout << "\nDer Vorgang kann fortgesetzt werden!" << endl;
    
    			}
    
    		else
    
    		cout << "\nDie Txt-Datei zur speicherung der Daten ist nicht vorhanden!" << endl;
            cout << "\n" << endl;
    
    		return 0;
    
    		}
    		else if(Wert == 2){
    
    			   cout << "\nIhre letzte Notiz:" << endl;
    
    ...
    ...
    ...
    

    THX für alle antworten!

    cu and good night 😉



  • .......try this:

    char Notizen[128]; 
    cout<<"Dateiname:"<<endl; 
    cin.getline(Notizen,127,'\n'); 
    ifstream Test(Notizen);//open überflüßig 
    if( !Test ){
      //Fehlerbehandlung
    }
    else{
      //Verarbeitungblabla
    }
    

    //wie immer: alle Angaben ohne Gewähr



  • Hi!

    Danke für deinen Beitrag ich werd das nach der Arbeit
    gleich mal ausprobieren! :)Bin für weitere Posts sehr dankbar ....

    cu



  • Siehe FaQ und da unter Dateiströmen o.ä.



  • Man sollte aber bemerken, dass man damit nur testet ob das Program auf ein solche Datei zugreifen darf, wenn ja dann muss es sie auch geben allerdings wenn nein dann ist es nicht ausgeschlossen, dass es sie trotzdem gibt.



  • Hi all!

    Also ich hab meinen Code dann mal so weit umgeschrieben doch irgendwas stimmt
    da noch nicht .....
    Es lässt sich zwar Compilieren aber beim Ausführen der exe kommt eine dicke Fehlermeldung. Auf jeden fall stimmt immer noch nicht was mit dem Existenstest ´meiner Txt-datei.
    Könnte mir einer da vielleicht noch ein Tip geben wie man das angehen könnte.
    Finde da einfach keinen Fehler und ich verstehe auch nicht warum er da meckert.
    Währe für hilfe sehr dankbar!

    ...
    ...
    ...
    
       break;
    
    	case 3:
    
    		cout << "\nNotizbuch:  Beta1.0"   << endl;
    		cout << "----------------------" << endl;
    
            cout << "\nOptionen:"                          << endl;
    
    		cout << "(1)-- Notiz schreiben"                << endl;
    		cout << "(2)-- Notizen öffnen   "              << endl;
    
    		cout << "\nGeben sie ihre Option ein:"         << endl;
    
    //#########################################
    
    		cin  >> Wert;
    
    		if(Wert == 1)
    
    		{
    
               char Notizen[200];
    
               cout << "\nDateiname:" << endl;
    
               cin.getline(Notizen,199,'\n');
    
               ifstream Test(Notizen);
    
              if( !Test ){ 
    
                //Fehlerbehandlung 
    		cout << "\nDie von ihnen eingegebene Datei ... "                 << endl;
    	    cout << "\nexistiert leider nicht!"                              << endl;
    	    cout << "\nUm diese Optionen nutzen zu koennen müssen sie"       << endl;
    	    cout << "\neine neue Txt-datei in dem Programm Ordner erstellen" << endl;
    
    		  } 
               else{ 
    
    			   cout << "\nDatei zur speicherung ist vorhanden ...." << endl;
    			   cout << "\nSie koennen fortfahren!" << endl;
    
    // Hier kommt der Code hin um etwas in die Txt-datei zu schreiben!!
    
        	   } 
    
    	return 0;
    
    		}
    		else if(Wert == 2){
    
    			   cout << "\nIhre letzte Notiz:" << endl;
    
                   fstream Ausgabe("Notizen.txt");
    
                   while(!Ausgabe.eof()){ 
    
                    string Satz;
    
                    getline(Ausgabe, Satz);
    
                    cout << Satz << endl;
    
    				cout << "\n";
    
    			   }
    
    }
    
    }
    
    return 0;
    
    }
    


  • Hallo,

    koenntest du bitte die ganzen Leerzeilen etwas reduzieren? Das kann man sich so
    nicht ordentlich durchlesen.

    mfg
    v R



  • PrOjEcT101 schrieb:

    blabla... aber beim Ausführen der exe kommt eine dicke Fehlermeldung. blabla...

    Und WELCHE Fehlermeldung kommt? Hast du mal versucht mit dem Debugger nach dem Problem zu suchen bzw es zu lokalisieren?



  • Hi also ....

    der Compiler bzw der debugger zeigt keine Errors und Warnungen an ....
    Nur beim Ausführen der exe kommt dieses:

    **
    Debug Assertion Failed!
    blablabla

    File: fopen.c
    Line: 54

    Expression: *file !=_T('\0')

    blablabla
    **

    Hier noch ma ohne Leerzeichen 😉

    ...
    ...
    ...
    
       break;
    
        case 3:
    
            cout << "\nNotizbuch:  Beta1.0"   << endl;
            cout << "----------------------" << endl;
    
            cout << "\nOptionen:"                          << endl;
    
            cout << "(1)-- Notiz schreiben"                << endl;
            cout << "(2)-- Notizen öffnen   "              << endl;
            cout << "\nGeben sie ihre Option ein:"         << endl;
    
            cin  >> Wert;
    
            if(Wert == 1)      
    
            {
               char Notizen[200];
    
               cout << "\nDateiname:" << endl;
    
               cin.getline(Notizen,199,'\n');
    
               ifstream Test(Notizen);
    
              if( !Test ){ 
    
                //Fehlerbehandlung 
            cout << "\nDie von ihnen eingegebene Datei ... "                 << endl;
            cout << "\nexistiert leider nicht!"                              << endl;
            cout << "\nUm diese Optionen nutzen zu koennen müssen sie"       << endl;
            cout << "\neine neue Txt-datei in dem Programm Ordner erstellen" << endl;                                        
              } 
               else{ 
                 cout << "\nDatei zur speicherung ist vorhanden ...." << endl;
                   cout << "\nSie koennen fortfahren!" << endl;
    
    // Hier kommt der Code hin um etwas in die Txt-datei zu schreiben!!
    
              }      
    
        return 0;
    
            }
            else if(Wert == 2){
    
                   cout << "\nIhre letzte Notiz:" << endl;
    
                   fstream Ausgabe("Notizen.txt");
    
                   while(!Ausgabe.eof()){ 
    
                    string Satz;
    
                    getline(Ausgabe, Satz);
    
                    cout << Satz << endl;
    
                    cout << "\n";
    
                   }
    
    }
    
    }
    
    return 0;
    
    }
    

    Also mir sagt diese Meldung echt garnichts .... please help me !

    THX and cu



  • PrOjEcT101 schrieb:

    Hier noch ma ohne Leerzeichen 😉

    🙄 🙄 guter Witz
    1st: benutze doch die c/C++ tags
    2nd: warum schreibst du 2^10 mal zu oft cout<<???????
    3rd: wie heißt die Droge, die bewirkt, daß du die ganzen Leerzeichennicht siehst??
    4th: try this:

    string Notizen;             
    cout<<endl<<"Dateiname: "<<endl; 
    cin>>Notizen;
    ifstream Test( Notizen.c_str() );
    

    dat funkt nämlich



  • Wo genau kommt denn der Fehler? Also in welcher Codezeile, die wird dir ja im Debug-Modus angezeigt.

    MfG SideWinder



  • //der Fehler kommt bestimmt hier:
    cin.getline(Notizen,199,'\n'); //aua aua
    ifstream Test(Notizen);

    FILE * __cdecl _tfsopen (
            const _TSCHAR *file,
            const _TSCHAR *mode
            ,int shflag
            )
    {
            REG1 FILE *stream;
            REG2 FILE *retval;
    
            _ASSERTE(file != NULL);
            _ASSERTE(*file != _T('\0'));//hier knalt's
    ....
    

    zu umgehen: schon gesagt s.Seite 1

    .....
    das ist aber auch nicht so ganz sauber hier:
    fstream Ausgabe("Notizen.txt");
    gib mal eine 'Datenflußrichtung' an;-)



  • freshman schrieb:

    //der Fehler kommt bestimmt hier:
    cin.getline(Notizen,199,'\n'); //aua aua
    ifstream Test(Notizen);

    FILE * __cdecl _tfsopen (
            const _TSCHAR *file,
            const _TSCHAR *mode
            ,int shflag
            )
    {
            REG1 FILE *stream;
            REG2 FILE *retval;
    
            _ASSERTE(file != NULL);
            _ASSERTE(*file != _T('\0'));//hier knalt's
    ....
    

    zu umgehen: schon gesagt s.Seite 1

    .....
    das ist aber auch nicht so ganz sauber hier:
    fstream Ausgabe("Notizen.txt");
    gib mal eine 'Datenflußrichtung' an;-)

    Wenn er keine 'Datenflussrichtiung' angibt, funktioniert lesen, wie auch
    schreiben. Er muss den Openmode nicht zwangsweise spezifizieren.

    mfg
    v R



  • @vir rel: okay, wußte ich net, aber....



  • juhi ....
    Danke für die vielen Beiträge .... werd das gleich mal ausprobieren. THX
    @freshman: du keine ahnung wie die heißt .... ich nehm schon soo viele Drogen da kann man auch schon ma den überblick verlieren *G* 😉

    THX all and cu



  • Hi Leutz....

    Ich kann mir gut vorstellen das dieses Tehma langsam echt nervt aber irgendwie will mich C++ verarschen 😉
    Nun klappt endlich der Existenztest meiner Txt-Datei aber nun speichert er auf einmal nicht mehr den Text den man eingibt. hat doch vorher auch noch geklappt !??? 😮
    ich versteh garnichts mehr .....

    ...
    ...
    ...
    
       break;
    
    //#######################################
    
    	case 2:
    
    		cout << "\nNotizbuch:  Beta1.0"   << endl;
    		cout << "----------------------" << endl;
    
            cout << "\nOptionen:"                          << endl;
    
    		//Menü-Start
    		cout << "(1)-- Notiz schreiben"                << endl;
    		cout << "(2)-- Notizen öffnen   "              << endl;
    		//Menü-Ende
    
    		cout << "\nGeben sie ihre Option ein:"         << endl;
    
    //#########################################
    
    		cin  >> Wert;
    
    		if(Wert == 1)
    
    		{
    			// clrscr()!
    
                // Existenztest der Txt-Datei zur speicherung der Eingaben
    
    		    string Notizen;
    
                cout << endl << "\nDateiname: "<< endl; 
    
                cin >> Notizen; 
    
                ifstream Test( Notizen.c_str() );
    
    			// Existenztst-Ende
    
              if( !Test ){ 
    
                //Fehlerbehandlung wenn datei nicht vorhanden
    
    		cout << "Die von ihnen eingegebene Datei ... "                 << endl;
    	    cout << "existiert leider nicht!"                              << endl;
    	    cout << "Um diese Optionen nutzen zu koennen müssen sie"       << endl;
    	    cout << "eine neue Txt-datei in dem Programm Ordner erstellen!" << endl;
    
    		cout << "\n";
    
    		getch();
    
    		  } 
               else{ // Fortgang des Prozesses wenn Txt-Datei vorhanden ist.
    
    	        cout << "\nDatei zur speicherung ist vorhanden ...." << endl;
    			cout << "\nSie koennen fortfahren!" << endl;
    
    			   // Sleep()
    			   // clrscr()
    
    			   //speicherung der Daten in die Txt-Datei
    
    			cout << "\nGeben sie nun ihre Notiz ein:" << endl;
    
                string Notiz;           // Hier wird eine String- Variable deklariert
                                        // die den eingegebenen Text speichert.
    
                ofstream Eingabe("Notizen.txt");   // Datei wird geöffnet.
    
                getline(cin, Notiz);             // zum einlesen der Buchstaben mit Leerzeichen!
    
                Eingabe << Notiz << endl;   // Eingabestrom wird verwendet um den Text in die
                                           // Txt-Datei "reinzuschieben"
    
    			cout << "\nIhre Eingaben wurden gespeichert" << endl;
    
    			getch();
    
    return 0; 
    
    } 
    
    		}
    		else if(Wert == 2){
    
    			  //  clrscr()!
    
    			   cout << "\nIhre letzte Notiz:" << endl;
    
                   fstream Ausgabe("Notizen.txt");
    
                   while(!Ausgabe.eof()){ 
    
                    string Satz;
    
                    getline(Ausgabe, Satz);
    
                    cout << Satz << endl;
    
    				cout << "\n";
    
    			   }
    
    		}
    
    }
    
    return 0;
    
    }
    

    ich versteh das nicht ..... hat doch vorher auch funktioniert 😕

    MFG



  • warum hast du denn da so unendlich viele Leerzeilen und blanks in deinem Code -> das siht ja schrecklich aus und läßt sich nicht lesen *Augen reib*
    formattiere das doch mal ordentlich!
    übrigens: bist du sicher, daß du dir die richtige Datei anguckst?! 😉 (inter scriptum: du weißt, daß du die Datei Notitzen.txt jedes mal überschreibst und nicht anfügst, oder??)
    warum benutzt du immer getch() *heul*???
    und:

    freshman schrieb:

    warum schreibst du 2^10 mal zu oft cout<<???????



  • Hi!

    Also jetzt noch ma und ich hoffe dieses mal besser 😉

    break;
        case 2:
    
            cout << "\nNotizbuch:  Beta1.0"   << endl;
            cout << "----------------------" << endl;
            cout << "\nOptionen:"                          << endl;
            //Menü-Start
            cout << "(1)-- Notiz schreiben"                << endl;
            cout << "(2)-- Notizen öffnen   "              << endl;
            //Menü-Ende
            cout << "\nGeben sie ihre Option ein:"         << endl;
    
            cin  >> Wert;
    
            if(Wert == 1)   
            {
                string Notizen;
                cout << endl << "\nDateiname: "<< endl; 
    			cin >> Notizen; 
                ifstream Test( Notizen.c_str() );
    
                // Existenztst-Ende
          if( !Test ){ 
    
                //Fehlerbehandlung wenn datei nicht vorhanden
            cout << "Die von ihnen eingegebene Datei ... "                 << endl;
            cout << "existiert leider nicht!"                              << endl;
            cout << "Um diese Optionen nutzen zu koennen müssen sie"       << endl;
            cout << "eine neue Txt-datei in dem Programm Ordner erstellen!" << endl;
            cout << "\n";
    
          } 
           else{ // Fortgang des Prozesses wenn Txt-Datei vorhanden ist.
              cout << "\nDatei zur speicherung ist vorhanden ...." << endl;
              cout << "\nSie koennen fortfahren!" << endl;
    
              cout << "\nGeben sie nun ihre Notiz ein:" << endl;
    
             string Notiz;          
             ofstream Eingabe("Notizen.txt");   // Datei wird geöffnet.
             getline(cin, Notiz);
    
    		 Eingabe << Notiz << endl;
    
    		 cout << "\nIhre Eingaben wurden gespeichert" << endl;
    
    return 0; 
    
    }                 
        }
         else if(Wert == 2){
    
           cout << "\nIhre letzte Notiz:" << endl;
    
           fstream Ausgabe("Notizen.txt");
    
            while(!Ausgabe.eof())
    		{ 
    
             string Satz;
             getline(Ausgabe, Satz);
             cout << Satz << endl;
    		 cout << "\n";
    
      }
    
    }
    
    }
    
    return 0;
    
    }
    

    Also gute frage .... ne das wusste ich nicht das die Datei jedes mal
    überschrieben wird. Wie muss man das ändern damit ein neuer Notiz eintrag
    an den alten angehängt wird ? z.b block artig 😉

    1.Eintrag Datum
    -------
    blablablabla
    blablablabla
    blablablabla
    -------

    2.Eintrag Datum
    -------
    blablablabla

    usw ....

    aber mein eigendliches prob mit meinem code ist das diesmal überhaubt nix in die Txt-Datei geschrieben wird. Was läuft da wieder falsch !?

    Ich bin für alle antworten dankbar!

    cu



  • oh man ich hab jetzt mehrmals den Code abgesucht nach Fehlern aber
    ich finde einfach nix ....
    kann mir keiner bei meinem problem helfen !?
    please ..... Hinweise ..... Tips .... bin für jeden Ratschlag dankbar !

    cu



  • ifstream Test( Notizen.c_str(), ios::in | ios::app );
    

    Mit ios::app wird die Datei so geöffnet, das Daten nicht überschrieben sondern angehangen werden. 😉



  • Hi!

    danke für deinen Beitrag ! 🙂
    kann niemand noch irgend einen Fehler endecken !?
    hmmm ..... ich geh dann heud abend den Code noch ma durch. ^^

    cu


Anmelden zum Antworten