نمایش نتایج: از شماره 1 تا 10 , از مجموع 10

موضوع: آموزش جامع زبان برنامه نويسي Delphi (دلفي)

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #6
    ناظم ارشد انجمن
    شاید من بی عیب نباشم اماتوهم نیستی...پس برو وپیش از شمارش اشتباهات من به خطاهای خودت رسیدگی کن
    تاریخ عضویت
    Feb 2010
    محل سکونت
    زیر ی سقف کنار عزیزترینم
    نوشته ها
    12,484
    تشکر تشکر کرده 
    190
    تشکر تشکر شده 
    12,809
    تشکر شده در
    3,688 پست
    حالت من : Relax
    قدرت امتیاز دهی
    11331
    Array

    پیش فرض

    نمایش میزان كپی شدن فایل با ProgressBar در دلفی

    چطور میتوان زمان کپی شدن فایل را با استفاده از ProgressBar نمایش داد؟
    برای انجام این کار ابتدا بر روی یک فرم یک ProgressBar اضافه کنید سپس تابع زیر را تایپ کنید:





    کد:
    procedure TForm1.CopyFileWithProgressBar1(Source, Destination:  string); 
    var 
    FromF, ToF: file of byte; 
    Buffer: array[0..4096] of  char; 
    NumRead: integer; 
    FileLength: longint; 
    begin  
    AssignFile(FromF, Source); 
    reset(FromF); 
    AssignFile(ToF,  Destination); 
    rewrite(ToF); 
    FileLength := FileSize(FromF); 
    with  Progressbar1 do 
    begin 
    Min := 0; 
    Max := FileLength; 
    while  FileLength > 0 do 
    begin 
    BlockRead(FromF, Buffer[0], SizeOf(Buffer),  NumRead); 
    FileLength := FileLength - NumRead; 
    BlockWrite(ToF, Buffer[0],  NumRead); 
    Position := Position + NumRead; 
    end; 
    CloseFile(FromF);  
    CloseFile(ToF); 
    end; 
    end;

    در این تابع شما در واقع فایل مبدا را خوانده و در مقصد مینویسید. حالا یک دکمه اضافه کرده کد زیر رو اضافه نمایید:





    کد:
    procedure TForm1.Button1Click(Sender: TObject);  
    begin 
    CopyFileWithProgressBar1('c:\Welcome.exe', 'c:\temp\Welcome.exe');  
    end;

    چطور می توان زمان کپی شدن فایل را محاسبه و نمایش داد؟
    برای این کار نیز میتوانید از تابع زیر استفاده کنید:





    کد:
    procedure TForm1.CopyFileWithProgressBar1(Source, Destination:  string); 
    var 
    FromF, ToF: file of byte; 
    Buffer: array[0..4096] of  char; 
    NumRead: integer; 
    FileLength: longint; 
    t1, t2: DWORD;  
    maxi: integer; 
    begin 
    AssignFile(FromF, Source); 
    reset(FromF);  
    AssignFile(ToF, Destination); 
    rewrite(ToF); 
    FileLength :=  FileSize(FromF); 
    with Progressbar1 do 
    begin 
    Min := 0; 
    Max :=  FileLength; 
    t1 := TimeGetTime; 
    maxi := Max div 4096; 
    while  FileLength > 0 do 
    begin 
    BlockRead(FromF, Buffer[0], SizeOf(Buffer),  NumRead); 
    FileLength := FileLength - NumRead; 
    BlockWrite(ToF, Buffer[0],  NumRead); 
    t2 := TimeGetTime; 
    Min := Min + 1; 
    // Show the time in  Label1 
    label1.Caption := FormatFloat('0.00', ((t2 - t1) / min * maxi - t2 +  t1) / 100); 
    Application.ProcessMessages; 
    Position := Position + NumRead;  
    end; 
    CloseFile(FromF); 
    CloseFile(ToF); 
    end; 
    end;

    در این تابغ ابتدا زمان اولیه در متغیر t1 ذخیره شده و سپس پس از کپی شدن هر قسمت از فایل، زمان در متغیر t2 ذخیره میشود و توسط فرمول زیر مقدار زمان باقی مانده تا کپی کامل فایل بدست می آید.





    کد:
     ((t2 - t1) / min * maxi  - t2 + t1) / 100

    [SIGPIC][/SIGPIC]

  2. 2 کاربر مقابل از mehraboOon عزیز به خاطر این پست مفید تشکر کرده اند.


برچسب ها برای این تاپیک

علاقه مندی ها (بوک مارک ها)

علاقه مندی ها (بوک مارک ها)

مجوز های ارسال و ویرایش

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

http://www.worldup.ir/