Datei kopieren?



  • Hat jemand eine Ahnung, wie ich eine Datei kopieren kann?
    Ich habs mal so ausprobiert.

    AnsiString path = ExtractFilePath(Application->ExeName);
      CopyFile(path.c_str, "C:\test");
    

    [C++ Fehler] Unit1.cpp(16): E2034 Konvertierung von 'char * (_fastcall * (_closure )())()' nach 'const char *' nicht möglich
    [C++ Fehler] Unit1.cpp(16): E2342 Keine Übereinstimmung des Typs beim Parameter 'lpExistingFileName' ('const char *' erwartet, 'void' erhalten)
    [C++ Fehler] Unit1.cpp(16): E2193 Zu wenige Parameter im Aufruf von '__stdcall CopyFileA(const char *,const char *,int)'



  • Versuch doch einfach mal, die Fehlermeldungen auszulegen, so schwer sind die ja nicht zu verstehen.

    Aber ich befürchte, dein ganzer Ansatz ist hoffnungslos verkehrt...
    Wenn du ein Verzeichnis kopieren willst, dann würde ich es nicht mit CopyFile() versuchen, und wie ruft man Funktionen auf?

    Und eib Blick ins Thema Escape Sequenzen könnte auch nicht schaden...

    Wenn du eine Datei kopieren willst, was fingerst du dann da groß mit ExtractFilePath() rum?

    CopyFile(FileName, NewFile, OverwriteIfExists)
    


  • Hallo,

    Zum Kopieren von Verzeichnissen etc. gibt es doch einen FAQ-Beitrag



  • 1. Doch für mich sind die Fehlermeldungen schwer zu verstehen...ich hab nicht viel Ahnung von allem dem, vor allem mit chars tu ich mich immer schwer, versteh die eh nie so richtig...kp warum

    Außerdem will ich kein Verzeichnis kopieren sondern eine Datei.

    Und ExtractFilePath brauch ich, da das Programm doch gar nicht weiß, wo sich das zu kopierende Programm befindet. Denn ich will die .exe ja auch weitergeben und ich kann jetzt doch nicht wissen, wo sie jemand hinpacken wird.



  • Hallo

    1. Du must nicht nur den Pfad bestimmen, sondern noch einen Dateinamen anhängen.
    2. c_str() ist eine Methode und deshalb müßen da Klammern dran
    3. CopyFile hat noch einen weiteren Parameter.

    AnsiString path = ExtractFilePath(Application->ExeName);
    path += "Filename";
    CopyFile(path.c_str(), "C:\test", false);
    

    bis bald
    akari



  • Danke klappt super.

    Wofür steht denn der 3 Parameter? Ob er bei vorhandener Datei abrechen soll oder was?



  • Wenn nicht schon der Name des Parameters beim Öffnen der Klammer erscheint, kannst du das ansonsten ganz leicht in der MSDN nachschauen: Google: site:msdn.microsoft.com CopyFile



  • Ach so alles klar, overwrite, hab ja fast richtig geraten 😃


Anmelden zum Antworten