(急).. indy控件 怎么获取服务器上的目录名 ( 积分: 90 )

  • 主题发起人 fred_jing
  • 开始时间
F

fred_jing

Unregistered / Unconfirmed
GUEST, unregistred user!
indy控件 怎么获取服务器上的目录名
 
FTP服务器?
 
建议参考 Indy Demo 自带的 FTP 代码。
里面有详尽的代码描述。

官方网站:
http://www.indyproject.org/
FTP 例子下载地址:
http://www.indyproject.org/DemoDownloads/Indy_10_FTPClient.zip
 
谢谢 我看了 好像没有如何从FTP 服务器取得一个目录的算法吧!
 
获取整个目录,包括子目录的功能那需要你自己写了,Indy 的 FTP Client 没有封装这样的操作。
就是做个目录遍历,自己写写相信也不会太难得。
 
就是不会啊! 获取服务器根目录 是可以的,就是得不到根目录下面的某个目录
 
呵呵,自己动手写写吧,用递归遍历比较简单一点。
动动手自己能学习到更多的东西。:)
 
用FindFirst,FindNext,FindClose这三个函数
遍历目录参考:
procedure SearchFileEx(const Dir, Ext: string; Files: TStrings);
var
Found: TSearchRec;
i: integer;
Dirs: TStrings;
Finished: integer;
StopSearch: Boolean;
begin
StopSearch := False;
Dirs := TStringList.Create;
Finished := FindFirst(Dir + '*.*', 63, Found);
while (Finished = 0) and not (StopSearch) do
begin
if (Found.Name <> '.') then
begin
if (Found.Attr and faDirectory) = faDirectory then
Dirs.Add(Dir + Found.Name)
else
if Pos(UpperCase(Ext), UpperCase(Found.Name)) > 0 then
Files.Add(Dir + Found.Name);
end;
Finished := FindNext(Found);
end;
FindClose(Found);
if not StopSearch then
for i := 0 to Dirs.Count - 1 do
SearchFileEx(Dirs, Ext, Files);
Dirs.Free;
end;
3
procedure FindSubDir(DirName: string; FileString: TStrings);
var
searchRec: TsearchRec;
begin
//找出所有下级子目录。
if (FindFirst(DirName + '*.*', faDirectory, SearchRec) = 0) then
begin
if IsValidDir(SearchRec) then
FileString.Add(DirName + SearchRec.Name);
while (FindNext(SearchRec) = 0) do
begin
if IsValidDir(SearchRec) then
FileString.Add(DirName + SearchRec.Name);
end;
end;
FindClose(SearchRec);
end;

function IsValidDir(SearchRec: TSearchRec): Boolean;
begin
if (SearchRec.Attr = 16) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
Result := True
else
Result := False;
end;
 
接受答案了.
 
顶部