IdFtp List問題 |
缺席
|
chhy515
一般會員 ![]() ![]() 發表:3 回覆:9 積分:2 註冊:2008-08-27 發送簡訊給我 |
IdFtp List時過不去,具體情況如下:
我用IdFtp控件寫了一個服務放在一臺電腦(甲)上,另外兩臺電腦(乙、丙)各建了一個FTP服務器,然後用程式分別去連電腦乙、丙,結果發現連電腦乙時,當程式走到IdFtp.list(nil,'*.*',true)時出現錯誤,而連電腦丙時就可以正常運行。 程式里我用了兩個IdFtp控件,分別對應電腦乙和丙,兩個控件屬性完全一樣,passive屬性為true,Ftp服務器用的是windows2003 server自帶IIS建立的!! |
RaynorPao
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
(1)List Method 的原型如下
[code delphi] procedure List(ADest: TStrings; const ASpecifier: string; const ADetails: boolean); [/code] (2)建議你 Create 一個 TStringList 放在第一個參數(你原本第一個參數是設成 nil),然後再試試
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
chhy515
一般會員 ![]() ![]() 發表:3 回覆:9 積分:2 註冊:2008-08-27 發送簡訊給我 |
謝謝您的回覆!
試過您說的方法,還是不可以! 下面是修改后部分代碼: try testdebug('LogonPath1: ' LogonPath1 #13#10); IdFTP.ChangeDir(LogonPath1); sleep(500); try testdebug('FtpList...'#13#10); dest:=TStringlist.Create; idftp.List(dest,'*.*',true); if dest.Count >0 then begin testdebug('ftplist:'#13#10); for i:=0 to dest.Count-1 do begin testdebug(#9 dest.Strings[i] #13#10); end; end; dest.Free; //IdFtp.List(nil, '*.*', True); testdebug('FtpListOK!'#13#10); sleep(100); //testdebug('FtpTransferType!'#13#10); idftp.TransferType:=ftbinary; testdebug('before GetFiles!'#13#10); GetFiles(idftp,host1); testdebug('after GetFiles!'#13#10); IdFTP.Disconnect; except testdebug('ErrorOccur in checkFTP!'#13#10); end;//list except testdebug('ChangeDir Error!'#13#10); end; //change dir |
careychen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
hi,關於 List 你可以不必要這樣子寫
可以直接 1、 var tsTmp: TStrings; tsTmp := TStringList.Create; IdFTP1.List(tsTmp); 處理完後 FreeAndNil(tsTmp); 2、 var tsTmp: TStrings; IdFTP1.List; tsTmp := IdFTP1.ListResult; 處理完後【 不可以 Free tsTmp 】 要注意一下: 1、List 中間的參數不須下 *.* 這樣【只會列出檔案】目錄不會列出!! 2、Windows 2003 的 ftp 不支援 Passive !! 所以你的 Client 有開沒開 Passive 是沒有關係的 另外,在 ChangeDir 與 List 的後面不用加 Sleep 的指令 ===================引 用 chhy515 文 章=================== 謝謝您的回覆! 試過您說的方法,還是不可以! 下面是修改后部分代碼: try testdebug('LogonPath1: ' LogonPath1 #13#10); IdFTP.ChangeDir(LogonPath1); sleep(500); // 其實這句是可以不必的 try testdebug('FtpList...'#13#10); dest:=TStringlist.Create; idftp.List(dest,'*.*',true); if dest.Count >0 then begin testdebug('ftplist:'#13#10); for i:=0 to dest.Count-1 do begin testdebug(#9 dest.Strings[i] #13#10); end; end; dest.Free; //IdFtp.List(nil, '*.*', True); testdebug('FtpListOK!'#13#10); sleep(100); //testdebug('FtpTransferType!'#13#10); idftp.TransferType:=ftbinary; testdebug('before GetFiles!'#13#10); GetFiles(idftp,host1); testdebug('after GetFiles!'#13#10); IdFTP.Disconnect; except testdebug('ErrorOccur in checkFTP!'#13#10); end;//list except testdebug('ChangeDir Error!'#13#10); end; //change dir
------
價值的展現,來自於你用哪一個角度來看待它!! |
chhy515
一般會員 ![]() ![]() 發表:3 回覆:9 積分:2 註冊:2008-08-27 發送簡訊給我 |
|
careychen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
|
chhy515
一般會員 ![]() ![]() 發表:3 回覆:9 積分:2 註冊:2008-08-27 發送簡訊給我 |
再請教下:
list中的第一個參數直接可以使用nil吧,那么給定TStrings變量和nil有何分別,用DirectoryListing都可以列出文件和目錄吧!謝謝! 您回覆的第二個方法好像有點問題,下面紅色這句編譯過不去! 2、 var tsTmp: TStrings; IdFTP1.List; tsTmp := IdFTP1.ListResult; 處理完後【 不可以 Free tsTmp 】 |
careychen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
哦,不好意思,我是用 indy10 的,所以照你說的,你應該是用 indy 9 的
那第二種就不用理他,使用第一個方法就行 而第一個方法 直接放 TString 或 nil 當然沒差別囉,你有放變數,他就回傳給你,你沒放當然你想改用 DirectoryListing 也是可以的 只是其實在 List 時,他就把 List 的結果已經下載下來了,只是看你是需要用 TStrings 的方式去解譯,或是用 IdFTP 內 的 DirectoryListing 解讀成你需要的格式而已,不過 【當第二個參數是使用 '*.*' 時,DirectoryListing 還是列不出目錄哦!!】 因為你下指令給 FTP Server 時,因為 *.* 就不會把目錄的資料傳回了!! ===================引 用 chhy515 文 章=================== 再請教下: list中的第一個參數直接可以使用nil吧,那么給定TStrings變量和nil有何分別,用DirectoryListing都可以列出文件和目錄吧!謝謝! 您回覆的第二個方法好像有點問題,下面紅色這句編譯過不去! 2、 var tsTmp: TStrings; IdFTP1.List; tsTmp := IdFTP1.ListResult; 處理完後【 不可以 Free tsTmp 】
------
價值的展現,來自於你用哪一個角度來看待它!! |
chhy515
一般會員 ![]() ![]() 發表:3 回覆:9 積分:2 註冊:2008-08-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |