Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kopiowanie pliku do katalogu

Ostatnio zmodyfikowano 2015-08-13 22:07
Autor Wiadomość
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:
C/C++
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?
P-136163
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.
P-136174
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ć

C/C++
void Cop( string od, string d )
{
    od = od + ".dll";
    CopyFileA( od.c_str(), d.c_str(), true );
}
:P
C/C++
...
...
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
P-136176
pekfos
» 2015-08-13 21:40:18
Nie.
C/C++
CopyFileA( "plik.dll", "foo/bar/plik.dll", TRUE );
P-136177
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 :
C/C++
void Cop( string od, string d )
{
    od = od + ".dll";
    d = d + ".dll";
    CopyFileA( od.c_str(), d.c_str(), true );
}

   
C/C++
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.
P-136179
« 1 »
  Strona 1 z 1