【发布时间】:2014-03-22 21:47:08
【问题描述】:
我尝试获取一个目录的子目录,我有一个工作脚本,但我只想要子目录名称而不是之前的目录名称。
示例:
如果我输入:“\Program Files (x86)\Embarcadero\RAD Studio\12.0”
然后这是我现在的输出:
"\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin"
"\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin64"
"\Program Files (x86)\Embarcadero\RAD Studio\12.0\binosx32"
...
但我希望我的输出是:
“斌”
“bin64”
“binosx32”
...
这是我现在使用的脚本:
procedure GetSubDirectories(const directory : string; list : TStrings) ;
var
sr : TSearchRec;
begin
try
if FindFirst(IncludeTrailingPathDelimiter(directory) + '*.*', faDirectory, sr) < 0 then
Exit
else
repeat
if ((sr.Attr and faDirectory <> 0) AND (sr.Name <> '.') AND (sr.Name <> '..')) then
List.Add(IncludeTrailingPathDelimiter(directory) + sr.Name) ;
until FindNext(sr) <> 0;
finally
SysUtils.FindClose(sr) ;
end;
end;
我怎样才能使这个脚本像我的例子一样?
【问题讨论】:
-
使用 IOUtils 单元避免自己编写这段代码
-
正如大卫已经提到的,你为什么不使用docwiki.embarcadero.com/Libraries/XE2/en/…?
-
@RBA 我正在寻找一种系统方法,可以为他们执行此操作,因为 FindFirst 已被弃用,但我在 TPath 中找不到任何会返回路径的最后一个子目录的内容。 :-(
标签: delphi subdirectory