本帖最后由 hnityd 于 2014-08-25 11:40:06 编辑

解决方案 »

  1.   

    是不是声明不一致,一个是const ,一个没有?
      

  2.   

    type
      TBackupProgressFunc = procedure(const ARemaining, APageCount: Int64);下面这样调用是没问题的,设置进度条就出错了
    procedure BackupProgress(const ARemaining, APageCount: Int64);
    这个定义和回调函数的定义一致
    procedure TFrmMain.setProgress(ARemaining, APageCount: Int64);
    这个的定义实际上是:
      TBackupProgressFunc = procedure(const ARemaining, APageCount: Int64) of object;
    两个是有区别的,你可以在
    procedure BackupProgress(const ARemaining, APageCount: Int64);
    begin
      FrmMain.setProgress(...);这样调用一次就可以了
    end;
      

  3.   


    这样写应该不报错procedure TFrmMain.setProgress(ARemaining, APageCount: Int64);
    begin
      TProgressBar(TForm(FindGloabalComponet('frmMain')).findcomponent('TProgressBar1')).Percent :=  100 * (APageCount - ARemaining) div APageCount;
    end;
      

  4.   

    procedure BackupProgress(const ARemaining, APageCount: Int64);
    begin
      FrmMain.setProgress(...);这样调用一次就可以了
    end;同意上上楼的,因为我一直就这样用。