نمایش نتایج 1 تا 6 از 6

نام تاپیک: کپی کردن یک فولدر

  1. #1

    کپی کردن یک فولدر

    با سلام
    چطوری میشه یه فولدر رو با همه فایلهای داخلش کپی کرد ؟
    مثلا از سی دی به هارد ؟؟؟؟
    مرسی .

    و اگر میشه توضیح بدین که انجام این عملیات رو چطور میشه با یک ProgressBar نشون بدیم .

    بازم مرسی .

  2. #2

    روش اول

    با سلام
    کد زیر خیلی راحت این کار را براتون انجام میده. در صورتی که تمایل به استفاده از چنین روشی نداشتید بفرمایید تا روش بعدی رو بنویسم که از طریق API هست و البته یک روش دیگر هم هست.

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, FindFile, Filectrl, ShellApi, ExtCtrls;

    type
    TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    Button1: TButton;
    Button2: TButton;
    FindFile1: TFindFile;
    Image1: TImage;
    Image2: TImage;
    ListBox1: TListBox;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1 : TForm1;
    Path,
    Path2 : string;

    implementation

    {$R *.DFM}


    procedure CopyRecursive(srcDir, dstDir: string);

    var
    cmd : string;
    begin
    cmd:='/c xcopy '+srcDir+' '+dstDir+' /E';
    ShellExecute(Application.handle,'open','command',P Char(cmd),nil,SW_SHOW);
    end;

    procedure TForm1.Button2Click(Sender: TObject);

    var
    Salida : TextFile;
    AppPath : string;
    begin
    AppPath := ExtractFilePath(Application.ExeName);
    AssignFile(Salida,AppPath+'\'+'Copia.ini');
    Rewrite(Salida);
    Writeln(Salida,Path);
    Writeln(Salida,Path2);
    CloseFile(Salida);
    Application.Terminate;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if ((Path='') or (Path2='')) then
    begin
    ShowMessage('Error... No hay directorio Source/Target');
    //no source directory
    end
    else
    begin
    Path := Edit1.Text;
    Path2 := Edit2.Text;
    if FileExists(Path2) then CopyRecursive(Path,Path2)
    else
    begin
    MkDir(Path2);
    CopyRecursive(Path,Path2);
    end;
    end;
    end;

    procedure TForm1.Image1Click(Sender: TObject);
    begin
    Path := ExtractFilePath(Application.ExeName);
    SelectDirectory(Path, [sdAllowCreate,sdPerformCreate,sdPrompt],1000);
    FindFile1.Path := Path;
    ListBox1.Items := FindFile1.SearchForFiles;
    Form1.Edit1.text := Path;
    end;

    procedure TForm1.Image2Click(Sender: TObject);
    begin
    Path2 := ExtractFilePath(Application.ExeName);
    SelectDirectory(Path2, [sdAllowCreate,sdPerformCreate,sdPrompt],1000);
    FindFile1.Path := Path2;
    ListBox1.Items := FindFile1.SearchForFiles;
    Form1.Edit2.text := Path2;
    end;

    procedure TForm1.FormCreate(Sender: TObject);

    var
    Entrada : TextFile;
    AppPath : string;
    InpSt,
    OutSt : string;
    begin
    AppPath := ExtractFilePath(Application.ExeName);
    if FileExists(AppPath+'\'+'Copia.ini') then
    begin
    AssignFile(Entrada, AppPath+'\'+'Copia.ini');
    reset(Entrada);
    readln(Entrada, InpSt);
    readln(Entrada, OutSt);
    Edit1.Text := InpSt;
    Edit2.Text := OutSt;
    Path := InpSt;
    Path2 := OutSt;
    CloseFile(Entrada);
    end
    else
    begin
    Edit1.Text := '';
    Edit2.Text := '';
    Path := '';
    Path2 := '';
    end;
    end;

    end.

    این کد تست شده است.
    شاد و پیروز باشید ...

  3. #3

    الان پنچ شنبه مورخ 15/12/1381 ساعت 12:06 شب = 6 دقیقه بامداد

    سلام دوست عزیز

    من فرمایشات جنابعالی رو فردا صبح امتحان میکنم .

    از پاسخ شما متشکرم .

    گلادیاتور :wink:

  4. #4
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018
    سلام
    من این کد را تست کردم ولی جواب نداد

    لطفا راهنمایی کنید که چطور مراحل کپی کردن فولدر را نمایش داد حالا یا با Progress یا همون کپی کردن در ویندوز

    ممنون

  5. #5
    کاربر دائمی
    تاریخ عضویت
    دی 1382
    محل زندگی
    پشت كامپيوتر
    پست
    381
    دوست عزیز فکر کنم خیلی راحتتر باشد از دو تابع

    CopyFile(فایل مبدا,فایل مقصد,آیا replace انجام شود یا نه);
    MkDir(نام پوشه برای ساختن آن);

    FileListBox1.Directory=MainFrm.exePath+Src;
    FilesCount=FileListBox1.Count; برای پیدا کردن تعداد فایلها برای Max PrograssBar

    داداش من با C++‎ Builder آنرا نوشتم راحت می تونی آنرا تغییر بدی
    c_str معادل Pchar دلفی است

    ProgressBar1->Max=FilesCount;
    ProgressBar1->Min=0;
    ProgressBar1->Position=0;

    for (int i=0;i<FilesCount;i++)
    {
    FileListBox1->ItemIndex=i;
    CopyFile(FileListBox1->FileName.c_str(),(Des+"\\"+FileListBo x1->Items->Strings[FileListBox1->ItemIndex]).c_str(),True);

    ProgressBar1->Position=i+1;;
    }


  6. #6
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018
    ممنون

تاپیک های مشابه

  1. کپی کردن یک فولدر
    نوشته شده توسط مهدی رحیم زاده در بخش C#‎‎
    پاسخ: 14
    آخرین پست: چهارشنبه 01 آبان 1392, 01:08 صبح
  2. سوال: کپی کردن یک فولدر با تمام زیرفولدر ها و فایل هایش
    نوشته شده توسط Morteza_s در بخش VB.NET
    پاسخ: 2
    آخرین پست: شنبه 23 آذر 1387, 10:52 صبح
  3. کپی کردن یک فولدر
    نوشته شده توسط aidin1386 در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: چهارشنبه 28 فروردین 1387, 21:16 عصر
  4. کپی کردن یک فولدر
    نوشته شده توسط mohsen_j_1990 در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: شنبه 13 بهمن 1386, 15:29 عصر
  5. کپی کردن یک فولدر و محتویات آن
    نوشته شده توسط Keramatifar در بخش برنامه نویسی در Delphi
    پاسخ: 5
    آخرین پست: جمعه 27 آبان 1384, 03:04 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •