全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2838
推到 Plurk!
推到 Facebook!

FTP 顯示下載進度

缺席
max5020
資深會員


發表:26
回覆:275
積分:320
註冊:2003-06-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-11 17:10:56 IP:121.34.xxx.xxx 訂閱

function Download_New(const FileName, Path, IP, User, Pass: String;
const FileNew: String='';
const FileSize: Integer=0): Boolean;
var IdFTP1: TIdFTP;
fs: TFileStream;
sf, sfn: String;
xForm: TForm;
xPanel: TPanel;

procedure CreateTempForm(const FileName: String);
begin
xForm:= TForm.Create(Application);
xForm.Caption:= 'File Download';
xForm.Position:= poDesktopCenter;
xPanel:= TPanel.Create(xForm);
xPanel.Parent:= xForm;
xPanel.Caption:= '';
end;
procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
xPanel.Caption:= 'Download ... ' IntToStr(AWorkCount) ' / ' IntToStr(FileSize) ' Bytes';
Application.ProcessMessages;
end;
procedure FreeFTP;
begin
IdFtp1.Disconnect;
IdFtp1.Free;
end;
begin
if FileNew='' then sfn:= FileName else sfn:= ExtractFilePath(FileName) FileNew;
if FileSize>0 then CreateTempForm(FileName);
Result:= false;
IdFtp1:= TIdFTP.Create(xForm);
if FileSize>0 then IdFtp1.OnWork:= IdFTP1Work; <--- 這行出錯
Error ... Incompatible types: 'method pointer and regular procedure'
請問要如何指定 onWork事件??
ps. 我想把FTP-Download寫成Function, 又要顯下載檔案進度
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-11 17:24:11 IP:61.64.xxx.xxx 訂閱
----> Error ... Incompatible types: 'method pointer and regular procedure'
英文看不懂嗎?
他就是跟你說,你必需將
IdFTP1Work 變成 TForm 的方法

procedure TForm.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
xxxxxxxxxx
end;




===================引 用 max5020 文 章===================

function Download_New(const FileName, Path, IP, User, Pass: String;
const FileNew: String='';
const FileSize: Integer=0): Boolean;
var IdFTP1: TIdFTP;
fs: TFileStream;
sf, sfn: String;
xForm: TForm;
xPanel: TPanel;

procedure CreateTempForm(const FileName: String);
begin
xForm:= TForm.Create(Application);
xForm.Caption:= 'File Download';
xForm.Position:= poDesktopCenter;
xPanel:= TPanel.Create(xForm);
xPanel.Parent:= xForm;
xPanel.Caption:= '';
end;
procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
xPanel.Caption:= 'Download ... ' IntToStr(AWorkCount) ' / ' IntToStr(FileSize) ' Bytes';
Application.ProcessMessages;
end;
procedure FreeFTP;
begin
IdFtp1.Disconnect;
IdFtp1.Free;
end;
begin
if FileNew='' then sfn:= FileName else sfn:= ExtractFilePath(FileName) FileNew;
if FileSize>0 then CreateTempForm(FileName);
Result:= false;
IdFtp1:= TIdFTP.Create(xForm);
if FileSize>0 then IdFtp1.OnWork:= IdFTP1Work; <--- 這行出錯
Error ... Incompatible types: 'method pointer and regular procedure'
請問要如何指定 onWork事件??
ps. 我想把FTP-Download寫成Function, 又要顯下載檔案進度
max5020
資深會員


發表:26
回覆:275
積分:320
註冊:2003-06-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-12 09:22:41 IP:121.34.xxx.xxx 訂閱
function Download_New(const FileName, Path, IP, User, Pass: String;
const FileNew: String='';
const FileSize: Integer=0): Boolean;
var IdFTP1: TIdFTP;
fs: TFileStream;
sf, sfn: String;
xForm: TForm;
xPanel: TPanel;

procedure CreateTempForm(const FileName: String);
begin
----->
xForm:= TForm.Create(Application);
xForm.Caption:= 'File Download';
xForm.Position:= poDesktopCenter;
-----> 您是指這個Form1嗎??
-----> 我是想將IdFTP1Work放在這個自己Create的xForm上面

xPanel:= TPanel.Create(xForm);
xPanel.Parent:= xForm;
xPanel.Caption:= '';
end;
procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
xPanel.Caption:= 'Download ... ' IntToStr(AWorkCount) ' / ' IntToStr(FileSize) ' Bytes';
Application.ProcessMessages;
end;
procedure FreeFTP;
begin
IdFtp1.Disconnect;
IdFtp1.Free;
end;
max5020
資深會員


發表:26
回覆:275
積分:320
註冊:2003-06-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-12 16:54:56 IP:121.34.xxx.xxx 訂閱
山不轉, 路轉, 改個方式寫, 就沒問題了!!
系統時間:2017-12-15 4:54:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!