【问题标题】:getting subdirectories from a directorie从目录中获取子目录
【发布时间】: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


【解决方案1】:

替换

List.Add(IncludeTrailingPathDelimiter(directory) + sr.Name) 

List.Add(sr.Name)

【讨论】:

  • @RBA,时间是相对的。
猜你喜欢
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
相关资源
最近更新 更多