System Befehl zum Kopieren und Löschen einer Datei



  • sole2202 schrieb:

    Und wieso funktioniert meins nicht? Könnte mir das mal jemand erklären?

    Du solltest evtl. auch mal den Rückgabewert der Funktion prüfen.

    Dass du die entsprechenden Rechte an der Datei und dem Verzeichnis haben musst, hast du auch sichergestellt?



  • Glaube mich daran erinnern zu können gehört zu haben das der system befehl unter windows den vollständigen pfad für die ausführbare .exe benötigt. das funktioniert dann natürlich nicht mit internen befehlen wie dir, copy usw. .
    Du Könntest dir eine mv.bat datei anlegen und diese dann mit dem vollständigen pfad aufrufen.
    Hoffe das hilft dir weiter.
    Kurt



  • nein, nein...so wie ich den code schrieb hatte er bei mir ja funktioniert. irgendwo ist bei ihm der wurm drin.



  • sole2202 schrieb:

    also

    rename (pfad.c_str(), pfad2.c_str());
    

    ? Da passiert leider auch nichts!

    Dann hast Du was falsch gemacht; was steht in pfad und pfad2?

    Aber das andere muss doch auch irgendwie hinbekommen zu sein. 🙄

    Ja, aber hier system einzusetzen ist eine echte Katastrophe. 👎



  • enno-tyrant schrieb:

    irgendwo ist bei ihm der wurm drin.

    Ihr....



  • CarstenJ schrieb:

    enno-tyrant schrieb:

    irgendwo ist bei ihm der wurm drin.

    Ihr....

    was ist denn das für eine aussage? post++, ich schaffe heute noch die 3100? 🙄

    begründe lieber deine aussage, oder besser noch: hilf ihm



  • Wenn er es schon für Win machen will, warum nimmt er dann nicht
    CopyFile & DeleteFile ?

    Devil



  • Weil es rename in der Standardbibliothek gibt?



  • enno-tyrant schrieb:

    CarstenJ schrieb:

    enno-tyrant schrieb:

    irgendwo ist bei ihm der wurm drin.

    Ihr....

    was ist denn das für eine aussage? post++, ich schaffe heute noch die 3100? 🙄

    begründe lieber deine aussage,

    Ja, beruhig dich wieder und komm runter. sole2202 ist offenbar ein weibliches Wesen:

    W-Info Studentin 😉

    enno-tyrant schrieb:

    oder besser noch: hilf ihm

    Hab ich schon versucht, aber offenbar reichen meine begrenzten Fähigkeiten nicht aus.



  • CarstenJ schrieb:

    ...Ja, beruhig dich wieder und komm runter...

    sorry, aber dieses 'ihr' kam schon recht heftig rüber 🙂



  • Hallo,

    in der Tat konnte man das falsch verstehen. War aber nix Böses dahinter. 😉



  • Danke für die nette Hilfe. Ich poste hier nochmal die vollständige Methode. Es geht nur um den unteren Abschnitt. Habe das, was ich mal probiert hatte auskommentiert. Vielleicht finden wir ja so den Fehler. Ansonsten muss ich es mal mit DeleteFile und CopyFile probieren.

    // Mit dieser Methode wird ein bestehender Kunde gelöscht!
    void Kunde::loeschen () {
    		string startkonto, endkonto; // werden für das Suchen bestehender Konten eines Kunden benötigt
    		string kontenNr; // Zwischenspeicher für die Konten, die ein Kunde hat
    		string pfad, pfad2; // Pfade für Kunden und Konten
    		int i = 0; // Laufvariable
    		int kontoId = 10; //Laufvariable für das Konto
    		Kunde kunde; // Objekt kunde;
    
    		// Zunächst wird überprüft ob es den Kunden gibt. Dazu wird im Verzeichnis C:/Konto/Dateien/Kunden/
    		// eine Textdatei mit der Kundenummer gesucht.
    		cout << "Bitte geben Sie die Kundennummer ein:" << endl;
    		cin >> kunde.kuNummer;
    		pfad = "C://Konto//Dateien//kunden//" + kunde.kuNummer + ".txt";
    		fstream kuFile(pfad.c_str(), ios::in| ios::out);
    
    		if (!kuFile) {
    			// Wenn der Kunde nicht existiert, wird die Methode Kunde loeschen verlassen.
    			cout << "Kundendaten nicht vorhanden" << endl << endl; 
    		}
    		else
    		{ // Die Kundendatei wurde gefunden und geoeffnet.
    		cout << "Datei erfolgreich geoeffnet!"<< endl;
    		cout << "Informationen zur Kundennummer: " << kunde.kuNummer << endl;
    
    		// Jeder Kunde kann 10 Girokonten, 10 Sparkonten und 10 Festgeldkonten haben. Ein Kunde kann allerdings
    		// nur geloescht werden, wenn er keine Konten mehr hat. Jetzt beginnt die Suche nach allen Konten eines
    		// Kunden.
    
    		startkonto = kunde.kuNummer + "10";
    		endkonto = kunde.kuNummer + "39";
    
    		while(startkonto != endkonto){
    			pfad = "C:/Konto/Dateien/konten/" + startkonto + ".txt";
    			fstream pruefung(pfad.c_str());
    
    			if(!pruefung) { // Konto nicht vorhanden
    				kontoId += 1;
    				ostringstream temp1;
    				temp1 << kontoId;
    				//neuer Kontenstring, um das naechste moegl. Konto zu ueberpruefen
    				startkonto = kunde.kuNummer + temp1.str();
    				}
    
    			else{
    				if(kontoId <= 39){ // "10 - 39" moegliche Konten
    					kontoId += 1;
    					ostringstream temp1;
    					temp1 << kontoId;
    					kontenNr += startkonto + "; "; // Zwischenspeicher für die einzelnen Konten eines Kunden
    					i++; //Prüfvariable um zu schauen, ob der Kunde überhaupt Konten hat
    					//neuer Kontenstring, um das naechste moegl. Konto zu ueberpruefen
    					startkonto = kunde.kuNummer + temp1.str();
    					}
    			}
    		}
    		pfad = "C://Konto//Dateien//kunden//" + kunde.kuNummer + ".txt";
    		pfad2 = "C://Konto//Dateien//kunden//geloescht//" + kunde.kuNummer  + ".txt";
    		if (i == 0) {
    			// Der Kunde hat keine Konten und wird somit geloescht. 
    			cout << "Es sind keine Konten vorhanden! Der Kunde wird nun geloescht!" << endl << endl;
    			string befehl;
    			rename (pfad.c_str(), pfad2.c_str());
    			cout << kunde.kuNummer;
    			cout << pfad.c_str() << endl;
    			cout << pfad2.c_str();
    			//befehl = ("copy ")+pfad+(" ")+pfad2; 
    			//system(befehl.c_str());
    //			befehl = ("del ")+pfad;
    //			system(befehl.c_str());
    
    		}
    
    		else {
    			// Der Kunde hat Konten und kann nicht geloescht werden. 
    			cout << "Es sind folgende Konten vorhanden: " << endl << kontenNr << endl;
    			cout << "Bitte loeschen Sie erst die Konten." << endl << endl;
    			}	
    		}
    
    }
    

    Gruß, Inga.

    P.S: Ich bin weiblich 🙂



  • Habe jetzt nochmal das Service Pack über meine VS 6.0 gebügelt. Allerings ohne Erfolg. Ich dachte, dass ich mir vielleich irgendwas zerschossen hätte. Vielleicht kann ja nochmal jemand schauen?! Habe die Vermutung, dass irgendwas mit den Pfaden nicht klappt.

    Gruß, sole.


Anmelden zum Antworten