Datei kopieren funktioniert nicht!
-
Hallo,
ich weiß nicht, warum mein Algorithmus nicht funktioniert ... ich möchte lediglich eine Datei kopieren und dabei gleich umbenennen:
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) ;
Ich habe mir die Pfade mit ShowMessage anzeigen lassen, die stimmen. Aber die Datei tauch nirgends auf
-
versuch mal:
CopyFile(AnsiString(Pfad + "Training-Vorlage.mdb").c_str(), AnsiString(USB_STICK).c_str(), false) ;
grüssle
-
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