| maciek50322 Temat założony przez niniejszego użytkownika | Kopiowanie pliku do katalogu » 2015-08-13 19:39:02 Mam zamiar przekopiować pliki (znajdujące się w katalogu z programem) do innego folderu, robię tak: string nazwa;cin >> nazwa;
 
 CreateDirectoryA( nazwa.c_str(), NULL );
 
 nazwa = nazwa + "\\bin";
 CreateDirectoryA( nazwa.c_str(), NULL );
 
 nazwa = nazwa + "\\Debug";
 CreateDirectoryA( nazwa.c_str(), NULL );
 
 CopyFileA( "libsndfile-1.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-window-d-2.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-window-2.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-system-d-2.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-system-d-2.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-network-2.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-network-d-2.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-graphic-d-2.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-graphic-2.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-audio-d-2.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-audio-2.dll", nazwa.c_str(), true );
 CopyFileA( "sfml-openal32.dll", nazwa.c_str(), true );
Kompilator nie zwraca błędów, niby działa, tworzą się nowe katalogi, ale pliki nie są kopiowane. Czy ktoś wie co robię nie tak? | 
|  | 
| pekfos | » 2015-08-13 21:05:33 Ścieżka w drugim argumencie CopyFileA() ma zawierać także nazwę pliku. Poprawienie tego dodatkowo wydłuży ten kod, wiec rozważ opakowanie kopiowania w funkcję i/lub trzymanie nazw w tablicy i kopiowanie w pętli, czy coś podobnego w drodze do uczynienia twojego kodu milszym oku. | 
|  | 
| maciek50322 Temat założony przez niniejszego użytkownika | » 2015-08-13 21:35:25 A więc zrobiłem takie coś nie wiem czy dokładnie o to ci chodziło, nowy plik taki .exe, ale go tam nie ma ani nic innego co chciałem skopiować void Cop( string od, string d ){
 od = od + ".dll";
 CopyFileA( od.c_str(), d.c_str(), true );
 }
 
:P ......
 CreateDirectoryA( nazwa.c_str(), NULL );
 nazwa = nazwa + "\\" + nazwa + ".exe";
 fstream plikexe( nazwa.c_str(), ios::out );
 plikexe.close();
 Cop( "libsndfile-1", nazwa );
 Cop( "sfml-window-d-2", nazwa );
 Cop( "sfml-window-2", nazwa );
 Cop( "sfml-system-d-2", nazwa );
 Cop( "sfml-system-d-2", nazwa );
 Cop( "sfml-network-2", nazwa );
 Cop( "sfml-network-d-2", nazwa );
 Cop( "sfml-graphic-d-2", nazwa );
 Cop( "sfml-graphic-2", nazwa );
 Cop( "sfml-audio-d-2", nazwa );
 Cop( "sfml-audio-2", nazwa );
 Cop( "sfml-openal32", nazwa );
 
możliwe że nie o to ci chodziło ;p ale może mnie nakierujesz na rozwiązanie | 
|  | 
| pekfos | » 2015-08-13 21:40:18 Nie. CopyFileA( "plik.dll", "foo/bar/plik.dll", TRUE );
 | 
|  | 
| maciek50322 Temat założony przez niniejszego użytkownika | » 2015-08-13 22:07:00 Dzięki. Wszystko działa trochę miałem błędów wcześniej, teraz je znalazłem. To oto jak mam to teraz : void Cop( string od, string d ){
 od = od + ".dll";
 d = d + ".dll";
 CopyFileA( od.c_str(), d.c_str(), true );
 }
cout << "nazwa: ";cin >> nazwa;
 pn = nazwa;
 CreateDirectoryA( nazwa.c_str(), NULL );
 nazwa = nazwa + "\\bin";
 CreateDirectoryA( nazwa.c_str(), NULL );
 nazwa = nazwa + "\\Debug";
 CreateDirectoryA( nazwa.c_str(), NULL );
 string pliki[ 12 ];
 pliki[ 0 ] = "libsndfile-1";
 pliki[ 1 ] = "sfml-window-d-2";
 pliki[ 2 ] = "sfml-window-2";
 pliki[ 3 ] = "sfml-system-d-2";
 pliki[ 4 ] = "sfml-system-2";
 pliki[ 5 ] = "sfml-network-2";
 pliki[ 6 ] = "sfml-network-d-2";
 pliki[ 7 ] = "sfml-graphics-d-2";
 pliki[ 8 ] = "sfml-graphics-2";
 pliki[ 9 ] = "sfml-audio-d-2";
 pliki[ 10 ] = "sfml-audio-2";
 pliki[ 11 ] = "openal32";
 for( int i = 0; i != 12; i++ )
 {
 nazwa = pn + "/bin/Debug/";
 nazwa = nazwa + pliki[ i ];
 Cop( pliki[ i ], nazwa );
 }
Działa perfekcyjnie mam nadzieję, że według ciebie też tak wygląda ;p. | 
|  | 
| « 1 » |