Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » Dateien kopieren Vc++ .net

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.08.2003, 11:23 Uhr
~Gast
Gast


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).

Wie bekomme ich jetzt das Kopieren hin?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.08.2003, 13:02 Uhr
~Test
Gast


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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.08.2003, 19:19 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.08.2003, 19:30 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
entweder Leif seine Variante oder ein anderes Bsp.

C++:
FileInfo file = new FileInfo(fileName.Replace(source, destination));
if(overwrite) file.CopyTo(file.FullName, true);


--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.08.2003, 07:42 Uhr
~Gast
Gast


Hab mal in einem englischen Forum gepostet und das erhalten:

LPCTSTR szString = NULL;
szString = (LPCTSTR)(System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(openFileDialog1->FileName).ToPointer());

CopyFile(szString,S"c\test\\test.dat",true);

System::Runtime::InteropServices::Marshal::FreeHGlobal((IntPtr((void*)szString)));

Was haltet ihr davon? Bzw. wie genau funktioniert das?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.08.2003, 08:00 Uhr
~Gast
Gast


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

C\Ordner\\Ordner2\\

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

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

erhalte ich diese Fehlermeldung:

error C2017: Ungültige ESCAPE-Sequenz
error C2001: Zeilenumbruch innerhalb einer Konstanten
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.08.2003, 08:40 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


versuch einfach mal / statt \\
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.08.2003, 10:35 Uhr
Bruder Leif
dances with systems
(Operator)


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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.08.2003, 19:03 Uhr
~Gast
Gast


Der gibt zwar einen String zurück doch muss ich in dem auch die \ durch \\ ersetzen. Was aber dank deinem Tipp jetzt auch funktioniert!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.02.2004, 18:05 Uhr
~nuts
Gast


mach mal n "@"-Zeichen vor den string!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: