delphi - 如何获取名称中也包含点的目录的子文件夹名称?

标签 delphi delphi-xe7

我正在尝试使用目录中的所有文件夹名称填充字符串列表。

以下是我如何做到这一点的摘录:

var
  SL: TStringList;
  SearchAttr: LongInt;
  SR: TSearchRec;
begin
  SL := TStringList.Create;
  try
    SearchAttr := (faDirectory);

    if FindFirst(Directory + '\*.', SearchAttr, SR) = 0 then
    begin
      try
        repeat
          if (SR.Attr and faDirectory) <> 0 then
          begin
            if (SR.Name <> '.') and (SR.Name <> '..') then
            begin
              SL.Add(Directory + SR.Name);
            end;
          end;
        until
          FindNext(Sr) <> 0;
        finally
          FindClose(SR);
        end;
      end;
    end;

    // do something with string list folder names      
  finally
    SL.Free;
  end;
end;

我访问的父文件夹包含 220 个子文件夹,但例程仅添加 216 个文件夹名称。经过一番比较和调试,我发现有4个未添加的文件夹名称中包含点。

为了测试,我创建了一个名为“测试文件夹”的文件夹,并在其中添加了 9 个新文件夹,名为:

  • Folder 1
  • Folder 2
  • Folder 3
  • Folder 4
  • Folder 5
  • Folder .6
  • Folder 7
  • F.O.L.D.E.R 8
  • Folder 9

使用“测试文件夹”作为父目录时,仅添加以下子文件夹:

  • Folder 1
  • Folder 2
  • Folder 3
  • Folder 4
  • Folder 5
  • Folder 7
  • Folder 9

我一直在尝试SR.Name <> '.' , SR.Name <> '..'SR.Name[1] <> '.'等等没有成功。

如何修改代码以允许文件夹名称中包含点并将它们添加到我的字符串列表中?

谢谢

最佳答案

将搜索字符串从 '*.' 更改为 '*'

您的搜索字符串仅匹配扩展名为空的对象。您想要匹配所有对象,无论它们是否具有扩展名。

关于delphi - 如何获取名称中也包含点的目录的子文件夹名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38161435/

相关文章:

delphi - 某些 XE2 程序在 Windows 资源管理器中不显示新的可执行图标

Delphi XE2 starter - 我有哪些数据库访问选项

delphi - VCL 样式随机中断

delphi - 如何在 x64 中使用 StackAlloc?

delphi - 如何查找接口(interface)中方法的索引?

delphi - JVCL安装Delphi XE7

delphi - 如何将字符串拆分为固定长度子字符串数组?

windows - 使用 Delphi 在 Windows 7 中检测用户何时锁定/解锁屏幕

android - 条形码读取 Delphi xe7, Intent 未触发后的事件

delphi - 数组的 WMI 值