نمایش میزان کپی شدن فایل با ProgressBar در دلفی - تالار گفتمان آذر فروم





دعوت به همکاری با آذر فروم

 

نمایش میزان کپی شدن فایل با ProgressBar در دلفی
زمان کنونی: 16-09-1395،07:34 ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: Friga
آخرین ارسال: Friga
پاسخ: 2
بازدید: 302

 
 
رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5

موضوع: نمایش میزان کپی شدن فایل با ProgressBar در دلفی
ارسال: #1
نمایش میزان کپی شدن فایل با ProgressBar در دلفی
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
چطور میتوان زمان کپی شدن فایل را با استفاده از 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;
















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


=====ஜ۩۞۩ஜ=====

18-05-1391 12:53 ق.ظ
 
ارسال: #2
RE: نمایش میزان کپی شدن فایل با ProgressBar در دلفی
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
چطور می توان زمان کپی شدن فایل را محاسبه و نمایش داد؟
برای این کار نیز میتوانید از تابع زیر استفاده کنید:

کد:
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 := ۰;

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
















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


=====ஜ۩۞۩ஜ=====

18-05-1391 12:54 ق.ظ
 


[-]
پاسخ سریع
پیام
پاسخ خود را برای این پیام در اینجا بنویسید.


کد تصویری
royalfuns
(غیر حساس به بزرگی و کوچکی حروف)
لطفاً کد نشان داده شده در تصویر را وارد نمایید. این اقدام جهت جلوگیری از ارسال‌های خودکار ضروری می‌باشد.

موضوعات مشابه ...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  محدودکردن تغییر اندازه فرم در دلفی Friga 0 260 18-05-1391 12:57 ق.ظ
آخرین ارسال: Friga
  استفاده از DLL‌ها در دلفی Friga 1 205 18-05-1391 12:57 ق.ظ
آخرین ارسال: Friga
  تاریخچه زبان دلفی Friga 6 422 18-05-1391 12:52 ق.ظ
آخرین ارسال: Friga
  نصب ProgressBar روی StatusBar در دلفی Friga 0 222 18-05-1391 12:49 ق.ظ
آخرین ارسال: Friga
  ساخت یک بانک اکسس در دلفی Friga 0 298 18-05-1391 12:46 ق.ظ
آخرین ارسال: Friga

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان