Możesz użyć funkcję SHFileOperation.
int CopyDirectory(AnsiString From, AnsiString To, bool Move) { From = IncludeTrailingPathDelimiter(From) + "*"; SHFILEOPSTRUCT shfileopstruct; ZeroMemory(&shfileopstruct, sizeof(shfileopstruct)); shfileopstruct.wFunc = Move?FO_MOVE:FO_COPY; shfileopstruct.pFrom = From.c_str(); shfileopstruct.pTo = To.c_str(); shfileopstruct.fFlags = FOF_NOCONFIRMMKDIR; return SHFileOperation(&shfileopstruct); } // Jeśli Move ustawione bedzie na true to przeniesie cala zawartosc folderu, jesli na false to skopiuje CopyDirectory("D:\\Source\\Path", "C:\\Dest\\Path", false);
Do realizacji samego przenoszenia folderu możesz wykorzystać funkcję rename, która została opisana tutaj. Z resztą ci nie pomogę bo nie korzystam z Buildera.
Jeśli zrobie tak to będzie dobrze?
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { int result; char oldname[] ="Edit1(nazwa pola tekstowego)"; char newname[] ="Edit2(nazwa pola tekstowego)"; result= rename( oldname , newname ); }
rename(Edit1->Text.c_str(),Edit2->Text.c_str());
Tekst z pierwszego edita może być np taki:
C:\Folder1
A z drugiego:
C:\Jakiś folder\Folder1
Wtedy przeniesie ci Folder1 z C na C:\Jakiś folder
Jestem trochę zaskoczony, ale niestety, ta funkcja jak również funkcja MoveFile nie umożliwia przenoszenie folderu z plikami pomiędzy partycjami.
MoveFile(Edit1->Text.c_str(),Edit2->Text.c_str());
musisz podać nazwę docelową folderu - a nie tylko lokalizację
np. c:\folder1 chcesz przenieść do np. c:\nowa_lokalizacja
to Edit1->Text="c:\Folder1"
Edit2->Text="c:\Nowa_lokalizacja\Folder1"
możesz użyć CopyFile("x","y", false)
x-pierwsza lokalizacja
Y-lokalizacja końcowa
lecz najpierw utwórz zmienne i prześlij do nich dane
93,599 zapytań
142,524 odpowiedzi
322,993 komentarzy
63,082 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj