dateien kopieren und später einfügen
-
schau dir mal den Wert von New_name mit dem Debugger an, da fällt dir vielleicht was auf
noch ein Tip : IncludeTrailingBackslash
-
ich habe erst mit dem builder angefangen, also wie genau "schaut man sich" das an?
Der Fehler is mir aber trotzdem gearde aufgefallen (besser doppelt als gar nicht), aber wie bekommt man aus Copy_Name den wirklichen dateienamen heraus?
Trotzdem schonmal danke für die hilfe!
-
Chris_ schrieb:
ich habe erst mit dem builder angefangen, also wie genau "schaut man sich" das an?
Der Fehler is mir aber trotzdem gearde aufgefallen (besser doppelt als gar nicht), aber wie bekommt man aus Copy_Name den wirklichen dateienamen heraus?
Trotzdem schonmal danke für die hilfe!
Setz mit F5 eine Sprungmarke und lass das Programm bis zu der Stelle laufen. - Dann kannst du mit Rechtsklick - Debug - Inspect (So ist es bei meiner BCB6 Version) anzeigen lassen, was in der Variable steht.
-
Chris_ schrieb:
aber wie bekommt man aus Copy_Name den wirklichen dateienamen heraus?
siehe ExtractFileName in der BCB-Hilfe
und zum Thema Debuggen: siehe FAQ
-
ich habe jetzt den code korrigiert, es geht aber immer noch nicht, wo ist mein fehler?
void __fastcall TForm1::Kopieren1Click(TObject *Sender) { Copy_Path = FileListBox1->FileName.c_str(); Copy_Name = ExtractFileName ( FileListBox1->FileName.c_str()); } //--------------------------------------------------------------------------- void __fastcall TForm1::Einfgen1Click(TObject *Sender) { New_Name = DirectoryListBox1->Directory +"\\" + Copy_Name; if(CopyFile (Copy_Path, New_Name.c_str() , true)==true) ShowMessage("true"); else ShowMessage("false"); FileListBox1->Update(); }
-
was steht denn in Copy_Path?
siehe ExtractFilePath in der BCB-Hilfe
-
ich weiß nicht, was da drin steht, weil ich mit den überwachten ausdrücken nicht ganz zurecht komme. wenn ich "Copy_Path" als ausdruck hinzufüge, steht da nur "Prozeß nicht verfügbar, aber kein variableninhalt
Linnea schrieb:
siehe ExtractFilePath in der BCB-Hilfe
das hat doch nichts mit Copy_Path, sondern mit Copy_Name zu tun, oder??
-
das problem mit den ausdrücken hat sich erledigt, in Copy_Path steht:
"C:\\Test\\Test\\Programm.cpp" (als beispiel)
ist das falsch?
EDIT: beim zweiten versuch stand da nur "C:\\", ich weiß nicht, warum.
-
nein "C:\\test\\test\\Programm.cpp" sollte richtig sein denn \ ist ein Zeichen, dass eine Funktion hat.
\n = neue zeile
\\ = schreibe ein \
und noch weiteresEDIT: ups egal hab mich verlesen.
-
aber warum geht der code dann nicht?
-
ok, das mit dem ExtractFilePath ist hier nicht nötig, da du ja den kompletten Dateinamen einschließlich Pfad brauchst
kann es sein, dass eine Datei mit gleichem Namen im Zielverzeichnis schon existiert?
vielleicht hilft auch die Verwendung von GetLastError um zu sehen was beim Kopieren nicht funktioniert hat.
-
Linnea schrieb:
kann es sein, dass eine Datei mit gleichem Namen im Zielverzeichnis schon existiert?
Nein, das zielverzeichnis ist leer, und außerdem gibt der parameter bei CopyFile soweit ich weiß an, ob eine vorhandene datei überschrieben wird; es geht aber weder bei true noch false.
GetLastError werde ich mal versuchen
EDIT: Bei GetLastError erhalte ich den wert "0";
-
versuch doch mal kurz die if abfrage rauszulassen und dann guck nach ob's geklappt hat, wenn nicht dann ist was anderes schuld, aber was ich so sehe, müsste soweit alles richtig sein, nur bei der abfrage bin ich mir nicht sicher.
Außerdem. Was dein Code nicht verrät ist was "Copy_Path" für ne Variable ist, aber so wie sie verwendet ist müsste es ein std::string sein
Warum heißt es dann aber nicht
[cpp]
if(CopyFile (Copy_Path**.c_str()**, New_Name.c_str() , true)==true)
[/cpp]
??? nur so am randeEDIT: ups2 name ^^
-
AnsiString Pfad; const char *Copy_Path; AnsiString New_Name; AnsiString Copy_Name;
sorry, hab ich vergessen zu sagen!
fragt mich nicht warum ich Copy_Name als const char* deklariert habe, aber so gehts ja...