ورود

View Full Version : کپی کردن یک فولدر و محتویات آن



Keramatifar
پنج شنبه 28 خرداد 1383, 12:46 عصر
procedure TForm1.Button1Click(Sender: TObject);
var
Fo : TSHFileOpStruct;
buffer : array[0..4096] of char;
p : pchar;
begin
FillChar(Buffer, sizeof(Buffer), #0);
p := @buffer;
StrECopy(p, ''C:\MyDir\*.*''); //this is folder that you want to copy
FillChar(Fo, sizeof(Fo), #0);
Fo.Wnd := Handle;
Fo.wFunc := FO_COPY;
Fo.pFrom := @Buffer;
Fo.pTo := ''C:\DestinationDir''; //this is where the folder will go Fo.fFlags := 0;
if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
ShowMessage(''Cancelled'')
end;

ماریا وکیلی
سه شنبه 24 آبان 1384, 21:33 عصر
اگه کسی روشی بهتر از این میدونه اپلود کنه بعد پروژش را آپلود کنه اینجا

اَرژنگ
چهارشنبه 25 آبان 1384, 05:47 صبح
روش بهتر.http://polytopia.com.au/default%5Blang=fa%5D.aspx?obj=tips%5B10%5D%5Blang= fa%5D

vcldeveloper
پنج شنبه 26 آبان 1384, 02:45 صبح
روش بهتر.http://polytopia.com.au/default%5Bl...%5Blang= fa%5D
هر دو از یک روش استفاده می کنند.

اَرژنگ
پنج شنبه 26 آبان 1384, 03:49 صبح
ولی روش استفاده شدنشون یکی نیست. :چشمک:

vcldeveloper
جمعه 27 آبان 1384, 03:04 صبح
ولی روش استفاده شدنشون یکی نیست
هر دو از رکورد TSHFileOpStruct و تابع SHFileOperation از Shell API ویندوز استفاده می کنند. اصل مطلب هم همینه. تفاوتشون در مقداردهی pFrom هست که چیز مهمی نیست.
در ضمن در کد دوم (لینکی که دادید): pFrom := PChar(fromDir + #0);
نیازی به اضافه کردن 0# نیست، نوع String در دلفی بصورت خودکار به 0# ختم میشه.