Dateien Kopieren
-
Wie lauten denn die Werte für pTo und pFrom genau?
-
DerAltenburger schrieb:
Hellseher- Code ???

1. Dic anlegen
2. TemporaryDic kopieren nach Dic
3. TemporaryDic mit Inhalt versehen.guck mal was drunter steht

sri schrieb:
Wie lauten denn die Werte für pTo und pFrom genau?
src. F:\...\WDB\enGB\*
dest. C:\Dokumente und...\Caches\Stoneraiders\( Programmintern natürlich mit \\ )
hab schon ne idee woran es liegen könnte. an whitespaces in den zu erstellenden ordnern viell. ich hab gerade ma ne funk. geschrieben um die zu ersetzen und werd jetzt ma gucken ^^
-
Probiere es mal mit
src. F:\...\WDB\enGB\.
dest. C:\Dokumente und...\Caches\Stoneraiders
-
schon lange probiert ^^ daran liegts net.
an den whitespaces übrigens auch net.
übrigens. * funtzt auch
das ist ja das blöde manchmal kopiert ers und manchmal nicht. und ich krieg net raus wann...
-
Also ich hab den fehler gefunden,
diese methode macht anscheinend schon die ordner, die erstellung der ordner ist allerdings zu langsam und wenn er dann versucht in den ordner zu kopieren der noch erstellt wird gibt es einen fehler. also muss man wenn man in einen ordner kopieren will der noch nicht vorher existiert diesen ordner erstellen. dann gehts.
ich hab es jetzt so gelöst.
ShellExecute(NULL,"open","cmd.exe",( "/c mkdir \"" + TemporaryDic +"\"" ).c_str(),NULL,SW_HIDE); for (int i = 0; i < 30; i++){ Sleep(100); Application->ProcessMessages(); } if ( COPYdir( Dic,Dest ) ){ Label4->Caption = "Couldn't Copy"; }else{ Label4->Caption = "Copied Successful"; } delete Dic,Dest;
-
rofl
-
hä ???
mach doch
move_file("von a" , "nach b");
-
*hust* deswegen heißt der thread auch "Dateien Kopieren"
-
Könnte man nicht auch CreateFile, ReadFile, und WriteFile fürs kopieren benutzen?
-> leere datei erstellen
-> alte datei mit read-access öffnen und auslesen
-> neu erstellte datei mit ausgelesenden daten vollschreiben
oder wäre das z.b. zu langsam/unhandlich/.. ?
-
so hatte ich das mal gemacht.. ist imho genausoschnell wie SHFileoperation...:
bool CInstaller::CopySH(LPCTSTR pFromFolder, LPCTSTR pToFolder) { //--- copy - routine --- CString from = pFromFolder; CString to = pToFolder; CString sRoot = to.Left( to.Find(_T("\\")) ); AddDirBackSlash(sRoot); //get free disk space on targetdrive __int64 i64FreeBytesToCaller, i64TotalBytes, i64FreeBytes; GetDiskFreeSpaceEx (sRoot, (PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes,(PULARGE_INTEGER)&i64FreeBytes); //check if more than 500 MB (512000 KB)(524288000 B) available on destination drive if(i64FreeBytes < 524288000) return false; CString toDir = ExtractDir(to); //create new directory, if it don't exists if(! DirectoryExists(toDir)) { int iPos = 0; while(true) { iPos = toDir.Find( _T("\\"), iPos + 1 ); if(iPos == -1) break; CString sTemp = toDir.Mid(0, iPos); ::CreateDirectory(sTemp,NULL); } } try { //init source- and destinationfiles CFile fromFile(from, CFile::modeRead | CFile::typeBinary | CFile::shareDenyWrite); CFile toFile; toFile.Open(to, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary); fromFile.SeekToBegin(); DWORD dwRead; //set buffer for reading/writing files const int BUFSIZE = 1024; BYTE buffer[BUFSIZE]; //read sourcefile and write destinationfile do { dwRead = fromFile.Read(buffer, BUFSIZE); toFile.Write(buffer, dwRead); } while (dwRead > 0); } catch( CFileException* ex) { ex->Delete(); } //Set file attributes for new file SetFileAttributes(to, GetFileAttributes(from)); return true; }:schland: :schland: :schland: :schland: