不是要出现WINDOWS的那个复制进度框而是要把进度呈现在程序中某一Progress上请各位高手把代码贴出让我学习学习。
小弟不胜感激!
小弟不胜感激!
解决方案 »
- 求助---请问哪位大哥大姐有XK3190A称重显示器的DELPHI7代码
- dbgrideh 列配置后保存的问题
- ondrawdatecell不取作用
- 请教TDateTimePicker控件,能否不输入日期,即日期为空?
- 如何用按钮备份恢复sqlserver2000的数据库(马上给分)
- 有关在WIN2000下关机的问题
- 请问在treeview控件中怎样判断单击一个项目实现某些功能?
- 请大家帮忙,错误提示:Invalid BLOB handle in record buffer.(在线)
- 组件不见了:(
- table的range怎么使用??偶第一回用,系统不认,指点一下(牛虻)
- 字符串编码转换的问题
- 请问这个存储过程怎么错了?
var
FromF,ToF:file;
NumRead,NumWritten:Integer;
Buf:array[1..2048] of Char;
n:integer;
begin
AssignFile(FromF,sourcef);
Reset(FromF, 1); { Record size = 1 }
AssignFile(ToF,targetf); { Open output file }
Rewrite(ToF, 1); { Record size = 1 }
n:=0;
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
form1.ProgressBar1.Position:=sizeof(buf)*n*100 div FileSize(FromF)*i div 4;
application.ProcessMessages;
//显示进度
BlockWrite(ToF, Buf, NumRead, NumWritten);
inc(n);
until (NumRead = 0) or (NumWritten <> NumRead);
form1.ProgressBar1.Position:=100;
CloseFile(FromF);
CloseFile(ToF);
end;
LPCWSTR lpExistingFileName, // pointer to name of an existing file
LPCWSTR lpNewFileName, // pointer to filename to copy to
LPPROGRESS_ROUTINE lpProgressRoutine, // pointer to the callback function
LPVOID lpData, // to be passed to the callback function
LPBOOL pbCancel, // flag that can be used to cancel the operation
DWORD dwCopyFlags // flags that specify how the file is copied
);
const
getPath = 'C:\Documents and Settings\zhangxf\My Documents\Downloads\visual foxpro 5.0 zhinan.rar';
setPath = 'c:\visual foxpro 5.0 zhinan.rar';
var
getStream,setStream: TFileStream;
num, n: Integer;
buf: PByte;
BufSize,block: Integer;
begin if not FileExists(getPath) then
begin
ShowMessage('源文件不存在');
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 do
begin
Application.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;