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 cDatenbankordner\temp nicht möglich).
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).
C++:
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
Bearbeitung:
Tags angepasst
Dieser Post wurde am 14.08.2003 um 13:43 Uhr von 0xdeadbeef editiert.
Vorsicht: Wenn Du ein .NET-Programm schreibst, solltest Du Dich vom Windows-API fernhalten, sonst gibts Probleme, wenn Du das Programm unter Linux oder MacOS starten willst. Schau Dir mal die Klasse "File" an, da gibbet soweit ich weiß eine Copy-Methode. (Sorry, hab grad keinen Zugriff auf die MSDN weil Urlaub und nur Uralt-Netscape...) -- Mit 40 Fieber sitzt man nicht mehr vor dem PC. Man liegt im Bett. Mit dem Notebook.
Vorsicht mit COM-Interop. Das wäre die Lösung aus dem Forum. Ist verdammt langsam, außerdem brauchst Du das nicht! Benutz lieber gleich den Datei Öffnen-Dialog von .NET, der gibt gleich einen String zurück und fertig. Keine Gemischtprogramme, auch wenn es noch so verlockend erscheint! Das mit dem Backslash sieht so aus: Im Quelltext mußt Du jeden Backslash verdoppeln, weil er sonst als Steuerzeichen angesehen wird. -- Mit 40 Fieber sitzt man nicht mehr vor dem PC. Man liegt im Bett. Mit dem Notebook.