带进度的文件复制 - 回复 冷风无泪 的问题
生活随笔
收集整理的這篇文章主要介紹了
带进度的文件复制 - 回复 冷风无泪 的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題來源: http://www.cnblogs.com/del/archive/2008/12/02/1066817.html#1389078
本例效果圖:
代碼文件:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComCtrls;typeTForm1 = class(TForm)Button1: TButton;ProgressBar1: TProgressBar;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); constgetPath = 'c:\temp\get.rar';setPath = 'c:\temp\set.rar'; vargetStream,setStream: TFileStream;num, n: Integer;buf: PByte;BufSize,block: Integer; beginif not FileExists(getPath) thenbeginShowMessage('源文件不存在');Exit;end;getStream := TFileStream.Create(getPath, fmOpenRead or fmShareExclusive);setStream := TFileStream.Create(setPath, fmCreate);num := getStream.Size;setStream.Size := num;getStream.Position := 0;setStream.Position := 0;BufSize := num;block := BufSize div 100;GetMem(buf, BufSize);ProgressBar1.Max := 100;ProgressBar1.Min := 0;ProgressBar1.Position := 0;while num <> 0 dobeginApplication.ProcessMessages;n := block;if n > num then n := num;getStream.ReadBuffer(buf^, n);setStream.WriteBuffer(buf^, n);ProgressBar1.Position := Trunc((1 - num / BufSize) * 100);Dec(num, n);end;FreeMem(buf, BufSize);getStream.Free;setStream.Free;ShowMessage('復制完畢');ProgressBar1.Position := 0; end;end. 窗體文件:
object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 104ClientWidth = 265Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalsePosition = poDesktopCenterPixelsPerInch = 96TextHeight = 13object Button1: TButtonLeft = 96Top = 56Width = 75Height = 25Caption = 'Button1'TabOrder = 0OnClick = Button1Clickendobject ProgressBar1: TProgressBarLeft = 8Top = 16Width = 249Height = 17TabOrder = 1end end
本例效果圖:
代碼文件:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComCtrls;typeTForm1 = class(TForm)Button1: TButton;ProgressBar1: TProgressBar;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); constgetPath = 'c:\temp\get.rar';setPath = 'c:\temp\set.rar'; vargetStream,setStream: TFileStream;num, n: Integer;buf: PByte;BufSize,block: Integer; beginif not FileExists(getPath) thenbeginShowMessage('源文件不存在');Exit;end;getStream := TFileStream.Create(getPath, fmOpenRead or fmShareExclusive);setStream := TFileStream.Create(setPath, fmCreate);num := getStream.Size;setStream.Size := num;getStream.Position := 0;setStream.Position := 0;BufSize := num;block := BufSize div 100;GetMem(buf, BufSize);ProgressBar1.Max := 100;ProgressBar1.Min := 0;ProgressBar1.Position := 0;while num <> 0 dobeginApplication.ProcessMessages;n := block;if n > num then n := num;getStream.ReadBuffer(buf^, n);setStream.WriteBuffer(buf^, n);ProgressBar1.Position := Trunc((1 - num / BufSize) * 100);Dec(num, n);end;FreeMem(buf, BufSize);getStream.Free;setStream.Free;ShowMessage('復制完畢');ProgressBar1.Position := 0; end;end. 窗體文件:
object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 104ClientWidth = 265Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalsePosition = poDesktopCenterPixelsPerInch = 96TextHeight = 13object Button1: TButtonLeft = 96Top = 56Width = 75Height = 25Caption = 'Button1'TabOrder = 0OnClick = Button1Clickendobject ProgressBar1: TProgressBarLeft = 8Top = 16Width = 249Height = 17TabOrder = 1end end
轉載于:https://www.cnblogs.com/del/archive/2008/12/02/1346281.html
總結
以上是生活随笔為你收集整理的带进度的文件复制 - 回复 冷风无泪 的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle常用的字符和字符串处理类函数
- 下一篇: 3D空间的指定起点和终点的抛体运动