# VC++ .net Datei kopieren



## Test (14. August 2003)

Da ich es nicht hinbekommen habe Dateien in meiner Accessdatenbank zu Speichern, muss ich jetzt den Umweg über normales Kopieren gehen! Ich speichere jetzt nur noch den Pfadnamen in der Datenbank und das Programm soll entsprechend die Dateien kopieren. Also Benutzer gibt per OpenFileDialog Datei an -> diese soll in einen Ordner mit den ganzen in der Datenbank gespeicherten Dateien kopiert werden. Der neue Pfad wird in Datenbank gespeichert und wenn Benutzer Datei wieder braucht wird der Pfad aus der Datenbank gelesen und die Datei wieder in einen vom Benutzer angegebenen Ordner kopiert. Soviel zu Theorie. Praktisch bin ich soweit: per OpenFileDialog kann ich den Pfad der Datei ermitteln! Die Datei soll im temp-Verzeichnis des Datenbankordner gespeichert werden(da dieser aber frei kopiert werden kann ist ein c:\Datenbankordner\temp nicht möglich). 

Wie bekomme ich jetzt das Kopieren hin?


----------



## Test (14. August 2003)

Ok musste windows.h inlcudieren und konnte dann CopyFile benutzen aber wie wandle ich jetzt den Pfad der Datei in das richtige Format für diesen Befehl um?
Hier mein Testcod (in label1->Text ist der Pfad gespeichert).


```
CopyFile(label1->Text,S"c:\test\test.dat",true);
```

und hier die allseits beliebte Fehlermeldung:

error C2664: 'CopyFileA': Konvertierung des Parameters 1 von 'System::String __gc *' in 'LPCSTR' nicht möglich


----------



## Test (15. August 2003)

Ich kann zwar jetzt Strings in der FileCopy-Anweisung benutzen aber sie müssen so aussehen:

C:\\Ordner\\Ordner2\\

wie kann ich nun aus "C:\frei\test\" "C:\\frei\\test\\" machen?

hab es mit Replace versucht aber wenn ich das so mache:
String* test="C:\frei\test\";
test=test->Replace("\","\\");

erhalte ich diese Fehlermeldung:

error C2017: Ungültige ESCAPE-Sequenz
error C2001: Zeilenumbruch innerhalb einer Konstanten


----------



## Alexander Schuc (15. August 2003)

Hallo,..

da du ja VC++.net geschrieben hast, antworte ich mal.

Der Backslash ist ein Escape-Zeichen, sprich, der darauf folgende char wird als spezielles Zeichen interpretiert

\t - Tabulator
\r\n - Win-Zeilenumbruch

Wenn du nun wie hier

```
CopyFile(label1->Text,S"c:\test\test.dat",true);
```
der Pfad hradcoded ist, müsst du

```
CopyFile(label1->Text,S"c:\\test\\test.dat",true);
```
schreiben, damit das '\t' nicht als Tabulator verstanden wird.

Wenn du dann aber die Pfadangaben aus einer Textbox ausliest, musst du den
Backslash nicht berücksichtigen.

Ich hoffe mal das dies alles auch für VC++.net gilt, und ich dir damit geholfen hab.

Mfg,
crazy-weasel


----------



## Test (16. August 2003)

Danke für die Erklärung, ist immer gut zu wissen warum etwas nicht geht 

Hab jetzt auch die Lösung gefunden Replace("\\","\\\\");


----------

