Q&A

  • NMFTP에서 서버쪽의 DIR 및 FILE을 보고자 합니다.
[질문1]

저는 Delphi4.0 의 NMFTP 를 이용하여 FTP화일전송 프로그램을 작성중입니다.

화면구성은 LOCLA에 DriveCombo,DirectoryOutline,FileListBox 를 사용하고있으며,

REMOTE에 DriveCombo, DirectoryOutline,FileListBox 를 사용하고 있습니다.

HOST NAME , uesrID, PASSWord등으로 연결은 되나,

REMOTE 쪽에 기본설정된 Directory 및 FileList를 볼 수 없습니다.

어떻게 하면 Remote 쪽에 Directory 및 FileList 을 볼 수 있습니까?



간단 한 방법이지만, 저에게는 땀을 뻘뻘 흘리고 있습니다.

이 시간 이후도 찾아 보겠지만, 답을 주시면, 감사합니다. ** 복 많이 받으세요.**



2  COMMENTS
  • Profile
    양병호 2000.01.19 02:06
    안녕하세요 저도 지금 델파이 4.0을 이용하여 FTP화일 전송프로그램을 한번 작성해볼까해서 만들고 있는 중입니다. 우연히 참조할만한 정보가 없을까 해서 웹서핑을 하던중에 천기님의 질문을 보고 나름대로 작성하고 있는 소스부분을 발췌해서 보내드리면 혹 도움이 될까 싶어서...



    Remote부분에 Drivecombo를 사용하면 안되고 NMFTP에서 호스트 화일정보와 폴더정보를 읽어서 하나씩 만들어 넣어야 하는거 같던데 왜냐하면 호스트는 물리적 드라이브로서 정보가 전달되는게 아니고, 또 DirectoryOutline의 속성을 정확히 몰라서 될지 안될지는 저도..

    저는 NMFTP와 TTreeView로 FTP에서 받은 화일 하나하나의 정보를

    NMFTP의 FTPDirectoryList속성의 Name, Attribute, Size, ModifDate를 TStringList로 읽어와서 붙인다음 하나하나의 화일들을 TreeView에 포함시켜서 이름과 속성 사이즈 수정일자를 TListView에 다시 상세하게 나타내어보았습니다.

    개략적인 소스를 보면



    procedure TFTPFm.proFileList;

    var

    i,j, iTotal : integer;

    strlist_name, strlist_size : TStringList;

    strlist_attb, strlist_date : TStringList;

    Node: TTreeNode;

    stemp : string;

    STime : TDateTime;

    Fname, Fsize, Fattb, Fdate : String;

    begin

    iTotal := 0;

    FileList.Items.Clear;

    strlist_name := TStringList.Create;

    strlist_size := TStringList.Create;

    strlist_attb := TStringList.Create;

    strlist_date := TStringList.Create;



    try

    FTP.ParseList := True;

    FTP.Vendor := NMOS_AUTO;

    FTP.List;



    strList_name.Assign( FTP.FTPDirectoryList.name );

    strList_attb.Assign( FTP.FTPDirectoryList.Attribute );

    strList_size.Assign( FTP.FTPDirectoryList.Size );

    strList_date.Assign( FTP.FTPDirectoryList.ModifDate );

    except



    end;

    iTotal := strList_name.Count;



    for i := 0 to strList_name.Count - 1 do begin //TreeView상에 폴더와 화일정보를 보여주는 부분

    Fname := strlist_name.Strings[i];

    Fattb := strlist_attb.Strings[i];



    if DirTree.Selected <> nil then

    begin

    if DirTree.Selected <> nil then

    Node := DirTree.Selected.GetFirstChild

    else

    Node := nil;

    while Node <> nil do

    if AnsiCompareFileName(Node.Text, FName) = 0 then

    exit

    else

    Node := DirTree.Selected.GetNextChild(Node);

    if Node = nil then

    begin

    Node := DirTree.Items.AddChild(DirTree.Selected,FName);

    Node.ImageIndex := Folder;

    Node.SelectedIndex := OpenFolder;

    end;

    end

    else begin

    DirTree.Items.AddChild(Root, FName);

    end;

    end;



    for i := 0 to strList_name.Count - 1 do begin

    Fname := strlist_name.Strings[i];

    Fattb := strlist_attb.Strings[i];

    Fsize := strlist_size.Strings[i];

    Fdate := strlist_date.Strings[i];

    CreateItem(FName, Fattb, Fsize, Fdate); //화일의 개별 속성값이 만들어져 ListView에 만들어주는 루틴

    end;



    strList_name.Free;

    strList_attb.Free;

    strList_size.Free;

    strList_date.Free;

    end;

    라는 루틴을 하나 만들어서 화일이나 디렉토리가 바뀔때 호출하여 상세정보를 나타내는데까지 성공했습니다. 물론 아직 시작한지 3일밖에 안되어서 나머지 부분은 손을 많이 봐야하지만 우선 원격FTP서버의 자료를 읽어와서 배치시키는데 까지 성공했거든요 도움이 되길 바라며 혹 더 구체적인 방법이 필요하면 서로 정보를 공유하면서 개발할수 있었으면 좋겠네요. 전 지금 만드는 프로그램을 공개용버젼으로 베포할 생각으로 작성중입니다.





    >

  • Profile
    김주석 2000.01.14 22:35
    김천기 wrote:

    > [질문1]

    > 저는 Delphi4.0 의 NMFTP 를 이용하여 FTP화일전송 프로그램을 작성중입니다.

    > 화면구성은 LOCLA에 DriveCombo,DirectoryOutline,FileListBox 를 사용하고있으며,

    > REMOTE에 DriveCombo, DirectoryOutline,FileListBox 를 사용하고 있습니다.

    > HOST NAME , uesrID, PASSWord등으로 연결은 되나,

    > REMOTE 쪽에 기본설정된 Directory 및 FileList를 볼 수 없습니다.

    > 어떻게 하면 Remote 쪽에 Directory 및 FileList 을 볼 수 있습니까?

    >

    > 간단 한 방법이지만, 저에게는 땀을 뻘뻘 흘리고 있습니다.

    > 이 시간 이후도 찾아 보겠지만, 답을 주시면, 감사합니다. ** 복 많이 받으세요.**

    >



    저의 경우에는 remote에는 listbox 2개를 이용하여 디렉토리와 파일을 보여주었습니다.

    서버는 sun o/s였거든요. winnt쪽이 아니라면 소스를 보여드리지요.