CopyFile funktioniert nicht mit variablen nicht



  • Hallo,

    ich habe folgendes Problem:

    Wenn ich das mache wird der file kopiert:
    CopyFile("C:\\textfile.txt", "C:\\folder\\textfile.txt", true);

    Wenn ich für das eine vaiable haben eben nicht
    std::string path;
    path = "C:\\textfile.txt";
    CopyFile(path.c_str(), "C:\\folder\\textfile.txt", true);

    Danke



  • Das stimmt nicht. Dein Beispiel funktioniert wunderbar. Bastele doch mal ein echtes Minimalbeispiel zusammen, das den Fehler reproduzierbar aufweist, anstatt konstruierte Beispiele zu liefern.



  • Bei mir funktioniert es auch wunder bar 😉



  • Hallo,

    so habe ich es gemacht.
    char path [2048];
    char filename [2048];
    std::string filenameasstring;
    std::string pathasstring;
    std::string complete;

    filename = "textfile.txt";
    path = "c:\";
    filennameasstring = filename;
    pathasstring = path;
    complete = pathasstring + filenameasstring;
    CopyFile(complete.c_str(), "C:\\folder\\textfile.txt", true);


  • Mod

    Das kannst du so nicht gemacht haben, das Programm ist voller Fehler und kann nicht übersetzt werden. Insgesamt scheinst du nicht verstanden zu haben, wie C-Strings funktionieren, sonst hättest du diese Fehler in deinem Beispiel nicht gemacht. Höchstwahrscheinlich liegt hier auch die Ursache deines eigentlichen Fehlers, aber solange du uns deinen Code verheimlichst, kann man dir nicht helfen. Nimm doch einfach gleich std::string, damit kann man als Anfänger wesentlich intuitiver umgehen.



  • path = "c:\";
    

    sollte einen Fehler ausgeben. \" wird zu dem Zeichen " umgewandelt, der String also nie beendet. Der Compiler sollte einen Fehler ausgeben.

    Außerdem frage ich mich, was du mit der Zwischenspeicherung in statischen character-arrays erreichen willst.

    Untersuche doch erstmal, ob die Strings überhaupt stimmen. Auch wenn sie richtig scheinen, können es immer noch fehlerhafte Leerzeichen am Ende oder Anfang sein.



  • So ich habs! Ich hatte eine strcpy funktion drin und deshlab hat es nicht funktioniert.

    Danke



  • Nein, so hast du es nicht gemacht. Das lässt sich ja nicht mal kompilieren.

    filename = "textfile.txt";
    path = "c:\\";
    

    Kabumm! Dafür nimmt man strcpy/strncpy. Oder halt gleich std::string.

    Noch ein Versuch: bastele doch bitte mal ein lauffähiges und vollständiges Beispiel zusammen, das den Fehler aufweist und das wir ausprobieren können.



  • Marthog schrieb:

    sollte einen Fehler ausgeben. \" wird zu dem Zeichen " umgewandelt, der String also nie beendet.

    Das ist nur ein Anzeigeproblem des Forums. Du kannst das sehen, wenn du seinen Beitrag zitierst. Er sollte halt code-Tags nehmen, dann geht's.


Anmelden zum Antworten