線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2484
推到 Plurk!
推到 Facebook!

如何將FTP內的所有檔案讀出?

答題得分者是:hagar
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-28 14:15:00 IP:211.21.xxx.xxx 未訂閱
各位Delphi前輩:
FTP----->Office(目錄)----->PPT(目錄)----->Ppt.ppt(檔案)
        |            |
        |            |
        |            ----->DOC(目錄)----->Doc.doc(檔案)
        |
        ----->Txt.txt(檔案)
(FTP下包含一個Office的目錄及Txt.txt的檔案,Office的目錄包含PPT及DOC兩個目錄,PPT包含一個Ppt.ppt的檔案,DOC包含一個Doc.doc的檔案) 使用IDFTP的元件 請問如何將Ppt.ppt、Doc.doc、Txt.txt這三個檔案放在TListBox中?敬請指教,感激不盡…
------
~小弟淺見,參考看看~
mine
中階會員


發表:28
回覆:129
積分:56
註冊:2004-03-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-28 16:34:15 IP:61.221.xxx.xxx 未訂閱
channel大大你好  用 IDFTP我可能不太會用 你可以試試引用WinINET.Pas 利用FtpGetCurrentDirectory 取代GetCurrentDirectory 用FtpFindFirstFile  FData:TWin32FindData; FFtpHandle,FInet,FHandle:HInternet; ex: FInet:=Internetopen(Pchar(APPNAME),0,nil,nil,0); FFtpHandle:=Internetconnerct(FINET,Pchar(Server),0, PChar(Userid),PChar(PassWord),Internet_Service_FTP,0, WININET_API_FLAG_USE_CONTEXT); FHandle:=FtpFindFirstFile(FFtpHandle,'*.*',FData,0,0) InternetFindnextFile(FHandle,@FData) 找完檔案請記得呼叫InrernetCloseHandle(FHandle)不然可能會有錯 搞不懂!搞不懂!永遠都搞不懂!! 發表人 - mine 於 2004/12/28 16:59:42
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-28 18:02:07 IP:202.39.xxx.xxx 未訂閱
大概像這樣(不過列出目錄那邊還有點 bug):
procedure TfrmMain.btnFtpConnectClick(Sender: TObject);
  procedure ListFile(ADir, ACompleteDir: string);
  var
    i: integer;
    DirCount: integer;
    CompleteDir: string;
    IdFtpListItems: TIdFTPListItems;
  begin
    IdFtp1.ChangeDir(ADir);
    mmFtp.Lines.Add('Change Dir: '   ADir);
    IdFtp1.List(mmFtp.Lines);
    DirCount := IdFtp1.DirectoryListing.Count;
    IdFtpListItems := TIdFTPListItems.Create;
    IdFtpListItems.Assign(IdFtp1.DirectoryListing);
    for i := 0 to DirCount - 1 do
      case IdFtpListItems[i].ItemType of
        ditDirectory:
          begin
            CompleteDir := ADir   '\'   IdFtpListItems[i].FileName;
            ListFile(IdFtpListItems[i].FileName, CompleteDir);
          end;
        ditFile: lbFtp.Items.Add('File: '   ACompleteDir   '\'   IdFtpListItems[i].FileName);
      end;        IdFtpListItems.Free;
    IdFtp1.ChangeDirUp;
  end;
var
  i: integer;
  DirCount: integer;
  CompleteDir: string;
  CurrentDir: string;
  IdFtpListItems: TIdFTPListItems;
begin
  IdFtp1.Connect;
  if IdFtp1.Connected then
  begin
    CompleteDir := '\';
    CurrentDir := '\';
    IdFtp1.List(mmFtp.Lines);
    DirCount := IdFtp1.DirectoryListing.Count;
    IdFtpListItems := TIdFTPListItems.Create;
    IdFtpListItems.Assign(IdFtp1.DirectoryListing);
    for i := 0 to DirCount - 1 do
      case IdFtp1.DirectoryListing[i].ItemType of
        ditDirectory:
          begin
            CompleteDir := CompleteDir   IdFtp1.DirectoryListing[i].FileName;
            ListFile(IdFtp1.DirectoryListing[i].FileName, CompleteDir);
          end;
        ditFile: lbFtp.Items.Add('File: '   CurrentDir   IdFtp1.DirectoryListing[i].FileName);
      end;
    IdFtpListItems.Free;
  end;
  IdFtp1.Disconnect;
  ShowMessage('done!');
end;
-- 棒球是從兩出局開始的.
系統時間:2024-06-07 9:59:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!