Datei wird mit Leerzeichen im Pfad nicht kopiert! Warum?
-
Hallo,
meine Datei wird trotz das ich den Dateipfad in Anführungsstrichen schreibe, nicht kopiert. Ich weiß es liegt an den Leerzeichen. Aber wo ist mein Fehler?
//Variablendeklaration int Wert; string destination; //Dateipfad auslesen string str = "U:\\Eigene Dateien\\Mappe1.xls; // Erste Position von \ (von rechts gesehen) holen string::size_type pos = str.rfind('\\'); if (pos != string::npos) ++pos; else pos = 0; //Neuen Ordner erstellen String Folder; Folder = "C:\\Neuer Ordner\\" ; _mkdir(Folder.c_str()); //Zielpfad mit Anführungszeichen char *anz = "\""; String mask = anz + Folder; destination = mask.c_str() + str.substr(pos); //mit Anführungszeichen // Textfeld füllen FILINGSYSTEM->edtFILENAME->Text = datei; bool hatGeklappt = CopyFile(datei,destination.c_str(),true); if (hatGeklappt == false) { Wert = Entscheidung(Text, Kopf); if (Wert == 1) { bool hatGeklappt = CopyFile(datei,destination.c_str(),false); MessageBox(NULL, destination.c_str(), "Datei kopiert:", MB_OK); if (hatGeklappt == true) MessageBox(NULL, "ja", "Datei kopiert:", MB_OK); else MessageBox(NULL, str.substr(pos).c_str(), "Datei nicht kopiert:", MB_OK); } else ; }
-
Du darfst gar keine Anführungsstriche in den Pfadnamen schreiben.
-
Danke, jetzt gehts.
ich hab in einem Tutorial gelesen, man müsse die Pfadnamen mit Anführungsstrichen versehen.
Ich bin schon fast verrückt geworden.
Danke!
-
Ja, wenn du den Dateinamen als Teil eines Konsolenbefehls per system() oder WinExec() einbaust, benötigst du die Anführungszeichen (sonst spaltet die Konsole den Namen in zwei einzelne Parameter auf). Die WinAPI-Funktionen wie CopyFile() benötigen das nicht.