procedure TKAIKAIMAIN.xiazai(ftplj,bdlj:string);
var
strnowdir,FileName : string; // FileName,name,
Dir_List:TStringList;
i: Integer;
begin
i:=0;
try
strnowdir:=ftplj;
if idftp1.RetrieveCurrentDir<>'\' then
begin
IdFTP1.ChangeDirUp;
IdFTP1.ChangeDirUp;
IdFTP1.ChangeDirUp;
end;
IdFTP1.ChangeDir(strnowdir);
Dir_List:=TStringList.Create;
idftp1.List(Dir_List);
IDFTP1.TransferType:=ftBinary;
if Dir_List.Count=0 then Exit;
//判斷是否是目錄
if (IdFTP1.DirectoryListing.Items[i].ItemType = ditDirectory ) then
begin
IdFTP1.ChangeDir(strnowdir);
end;
for i:=0 to Dir_List.Count-1 do
begin
FileName:=IdFTP1.DirectoryListing.Items[i].FileName;
showmessage(FileName);
if (IdFTP1.DirectoryListing.Items[i].ItemType = ditFile) then
//本地若存在檔案,判斷下載后是否覆寫本地檔案 // and (IdFTP1.DirectoryListing.Items[i].ModifiedDate > StrToDate('2011-3-19'))
begin
if FileExists(bdlj+IdFTP1.DirectoryListing.Items[i].FileName) then
begin
//ShowMessage('檔案己下載');
Continue;
end
else
begin
IdFTP1.Get(IdFTP1.DirectoryListing.Items[i].FileName,bdlj+IdFTP1.DirectoryListing.Items[i].FileName,False,true);
end;
end ;
end;
// showmessage(ftplj+'下載成功');
Dir_List.Free;
except
;
end;
end;
每次執行到IdFTP1.DirectoryListing.Items[i].ItemType = ditDirectory 就報出這個例外
uj5u.com熱心網友回復:
這里:IdFTP1.ChangeDir(strnowdir);
還需要再呼叫List方法,改成下面的試試
if (IdFTP1.DirectoryListing.Items[i].ItemType = ditDirectory ) then
begin
IdFTP1.ChangeDir(strnowdir);
idftp1.List(Dir_List);
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/154562.html
標籤:VCL組件開發及應用
下一篇:在資料流里偵測到無效的版本號
