Datei kopieren funktioniert nicht!



  • Geht nicht! Dann kriege ich das hier vom Compiler:

    [BCC32 Fehler] DatenFrm.cpp(102): E2034 Konvertierung von 'AnsiString' nach 'const char *' nicht möglich
    [BCC32 Fehler] DatenFrm.cpp(102): E2342 Keine Übereinstimmung des Typs beim Parameter 'lpNewFileName' ('const char *' erwartet, 'AnsiString' erhalten)

    Deshal hatte ich ja auch (char)* vorgeschrieben, dass er ein char* draus macht ...

    Ich möchte ganz einfach einen dynamischen Kopierbefehl, wo ich die Pfade jeweils angeben kann!!



  • ich hab die Vermutung, dass

    CopyFile((char*)(Pfad + "Training-Vorlage.mdb").c_str(), (char*)USB_STICK.c_str(), false) ;
    

    zwischen Pfad und dem Dateinamen ein Slash fehlt !



  • String Pfad = ExtractFilePath(Application->ExeName) ;
    	String USB_STICK = "C:\\Projekte\\TrainingsPC\\Training.mdb" ;
    	CopyFile((char*)(Pfad + "\Daten und Vorlagen\\Training-Vorlage.mdb").c_str(), (char*)(USB_STICK.c_str()), false) ;
    

    Das bringt leider keine Veränderung 😞 Die zu erstellende Datei existiert immernoch nicht ...



  • Ne ne so:

    String Pfad = ExtractFilePath(Application->ExeName) ;
    	String USB_STICK = "C:\\Projekte\\TrainingsPC\\Training.mdb" ;
    	CopyFile((char*)(Pfad + "\\Training-Vorlage.mdb").c_str(), (char*)USB_STICK.c_str(), false) ;
    


  • Gibt es dafür nicht die Funkion IncludeTrailingBackslash()? Also um am Ende eines Pfades immer einen Backslash zu haben.

    Gruß KK



  • Wozu soll bitte schön der (char*)-cast gut sein? Damit würde das const weggecastet und sowas sollte man niemals machen. Außerdem ist es hier auch nicht nötig.



  • Naja wenn ich das (char)* weglasse, habe ich wieder einen Konvertierungsproblem, von wchar_t * nach const char *
    ...
    Ich hatte das irgendwo im Internet gefunden:

    (char*)String.c_str()
    


  • Hallo

    Nein, du darfst nicht einfach aus einem wchar_t* ein char* casten. Sind nun mal zwei verschiedene Typen.
    Alles was du brauchst ist die Funktion, die statt char* wchar_t* annimmt. Diese Funktion heißt CopyFileW (siehe auch hier). Mich wundert allerdings das bein Builder nicht automatisch die korrekten Unicode-Variante verwendet, denn bei dir ist String ja auch UnicodeString...

    bis bald
    akari



  • Falls du in den Projektoptionen unter _TCHAR = wchar_t eingestellt hast
    (also du verwendest UnicodeStrings)

    muss auch

    CopyFile(OrginFile.w_str(), DestFile.w_str(), false);
    

    WideStrings übergeben werden.



  • Hey danke euch beiden, es funktioniert 🙂


Anmelden zum Antworten