delphi4arab منتديات دلفي للعرب

نسخة كاملة : نسخ مجلد نحو مجل آخر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته ،
كنت أبحث عن طريقة نسخ مجلد نحو مجلد آخر فوجد هذه الفكرة فأحببت أن أضعها لكم للتعم الفائدة .

كود :
function CopyFolder(FromFld, ToFld: string): boolean; var fos: TSHFileopStruct; begin // il faut supprimer les antislashs de fin sinon vous aurez droit à un message d'erreur // you must delete backSlsh FromFld := ExcludeTrailingPathDelimiter(Trim(FromFld)); ToFld := ExcludeTrailingPathDelimiter(Trim(ToFld)); FillChar(fos, SizeOf(fos),0); with fos do begin wFunc := FO_COPY; pFrom := PChar(FromFld+#0); pTo := PChar(ToFld+#0); fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR; end; Result := ShFileOperation(fos)=0; end;

كود :
if CopyFolder('d:\Folder01', 'c:\Folder2')then ShowMessage('Ok ') else ShowMessage('No');

طبعا لا تنس إضافة ShellAPI لقائمة Uses .
بارك الله فيك وجزاك الله خير
احب اضيف تعديل بسيط لمن اراد ان ينسخ ما بداخل المجلد من ملفات دون نسخ كامل المجلد.

ليصبح الكود:

كود :
if CopyFolder('D:\CopyFolder\11\*.*', 'D:\CopyFolder\1')then ShowMessage('Ok ') else ShowMessage('No'); end;

فقط قم باضافة ((\*.* )) بعد المجلد الهدف
طريقة أسهل بكثير

كود :
TDirectory.Delete(Path,true);

حيث Path مسار المجلد و True يدل على الحدف التراجعي لجميع المجلدات المحتوات فيه بما فيها الملفات

يجب إستدعاء IOUtils