在程序中使用copyFileTo进行文件的拷贝,怎样设置ProgressBar显示其进度?

解决方案 »

  1.   

    用FileSize()获得文件大小.
    Integer((已Copy的字节数/文件大小)*100);
      

  2.   

    能否说详细点?我没用过delphi,不知怎么设置progressBar,呵呵,别怪我菜
      

  3.   

    for i := 0 to n do
    begin
      ProgressBar.position = i;
      Application.ProcessMessage;
    end;
      

  4.   

    使用BlockWrite的方法才可以
    要不是就ShellAPI的SHFileOperation文件操作,通过Windows的也可以的
      

  5.   

    拷贝文件时有进度显示
    procedure TForm1.mycopyfile(sourcef,targetf:string);
    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.label1.caption:=IntToStr(sizeof(buf)*n*100 div FileSize(FromF))+'100%';
            application.ProcessMessages;
            //显示进度
            BlockWrite(ToF, Buf, NumRead, NumWritten);
            inc(n);
        until (NumRead = 0) or (NumWritten <> NumRead);
        form1.Label1.Caption:='100%';
        CloseFile(FromF);
        CloseFile(ToF);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      mycopyfile('e:\components\tv2k-w2k.zip','c:\a.zip');
    end;