1

我正在尝试在进度条中显示状态的同时下载文件。

我按照此处的说明进行操作:http: //delphi.about.com/cs/adptips2003/a/bltip0903_2.htm

这是我的代码:

unit unitUpdate;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, StdCtrls, ComCtrls, ExtActns;

type
  TForm5 = class(TForm)
    ProgressBar1: TProgressBar;
    SaveDialog1: TSaveDialog;
  private
    procedure URL_OnDownloadProgress
        (Sender: TDownLoadURL;
         Progress, ProgressMax: Cardinal;
         StatusCode: TURLDownloadStatus;
         StatusText: String; var Cancel: Boolean) ;
         function DoDownload: boolean;
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.URL_OnDownloadProgress;
begin
   ProgressBar1.Max:= ProgressMax;
   ProgressBar1.Position:= Progress;
end;

function TForm5.DoDownload: Boolean;
begin
  ShowMessage('A new update is available!');
  savedialog1.Title := 'Save Update';
  savedialog1.Filter := 'Exe Files (*.exe)|*.exe';
  savedialog1.Execute;
  if savedialog1.filename = '' then
    Application.Terminate
  else begin
   with TDownloadURL.Create(self) do
   try
     URL:='linktofile';
     FileName := savedialog1.FileName + '.exe';
     OnDownloadProgress := TForm5.URL_OnDownloadProgress;

     ExecuteTarget(nil) ;
   finally
     Free;
   end;
  end;
end;

end.

编译后出现以下错误:

[DCC Error] unitUpdate.pas(50): E2010 Incompatible types: 'TDownloadProgressEvent' and 'Procedure'

它指的是这行代码:

OnDownloadProgress := TForm5.URL_OnDownloadProgress;

我无法修复此错误。任何帮助将不胜感激。

谢谢。

4

2 回答 2

5

TForm5.URL_OnDownloadProgress不是一个有效的句子,你必须使用表单的实例(不是 tyoe),所以试着写这样的东西

 OnDownloadProgress := Self.URL_OnDownloadProgress;

或者

 OnDownloadProgress := URL_OnDownloadProgress;
于 2012-07-09T17:40:06.137 回答
2

删除 TForm5:

OnDownloadProgress := URL_OnDownloadProgress
于 2012-07-09T17:39:51.623 回答