[질문1]
저는 Delphi4.0 의 NMFTP 를 이용하여 FTP화일전송 프로그램을 작성중입니다.
화면구성은 LOCLA에 DriveCombo,DirectoryOutline,FileListBox 를 사용하고있으며,
REMOTE에 DriveCombo, DirectoryOutline,FileListBox 를 사용하고 있습니다.
HOST NAME , uesrID, PASSWord등으로 연결은 되나,
REMOTE 쪽에 기본설정된 Directory 및 FileList를 볼 수 없습니다.
어떻게 하면 Remote 쪽에 Directory 및 FileList 을 볼 수 있습니까?
간단 한 방법이지만, 저에게는 땀을 뻘뻘 흘리고 있습니다.
이 시간 이후도 찾아 보겠지만, 답을 주시면, 감사합니다. ** 복 많이 받으세요.**
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서버의 자료를 읽어와서 배치시키는데 까지 성공했거든요 도움이 되길 바라며 혹 더 구체적인 방법이 필요하면 서로 정보를 공유하면서 개발할수 있었으면 좋겠네요. 전 지금 만드는 프로그램을 공개용버젼으로 베포할 생각으로 작성중입니다.
>