如何获取名称中也包含点的目录的子文件夹名称?
How to get sub folder names of a directory that also contain dots in the name?
我正在尝试用一个目录中的所有文件夹名称填充一个字符串列表。
以下是我如何做到这一点的摘录:
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个没有添加的文件夹名称中包含点。
为了测试,我创建了一个名为 "Test Folder" 的文件夹,并在其中添加了另外 9 个名为:
的新文件夹
- Folder 1
- Folder 2
- Folder 3
- Folder 4
- Folder 5
- Folder .6
- Folder 7
- F.O.L.D.E.R 8
- Folder 9
当使用"Test Folder"作为父目录时,只会添加以下子文件夹:
- Folder 1
- Folder 2
- Folder 3
- Folder 4
- Folder 5
- Folder 7
- Folder 9
我一直在试验 SR.Name <> '.'
、SR.Name <> '..'
和 SR.Name[1] <> '.'
等,但没有成功。
如何修改代码以允许名称中包含点的文件夹名称并将它们添加到我的字符串列表中?
谢谢
将搜索字符串从 '*.'
更改为 '*'
您的搜索字符串仅匹配具有空扩展名的对象。您想要匹配所有对象,无论它们是否具有扩展名。
我正在尝试用一个目录中的所有文件夹名称填充一个字符串列表。
以下是我如何做到这一点的摘录:
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个没有添加的文件夹名称中包含点。
为了测试,我创建了一个名为 "Test Folder" 的文件夹,并在其中添加了另外 9 个名为:
的新文件夹
- Folder 1
- Folder 2
- Folder 3
- Folder 4
- Folder 5
- Folder .6
- Folder 7
- F.O.L.D.E.R 8
- Folder 9
当使用"Test Folder"作为父目录时,只会添加以下子文件夹:
- Folder 1
- Folder 2
- Folder 3
- Folder 4
- Folder 5
- Folder 7
- Folder 9
我一直在试验 SR.Name <> '.'
、SR.Name <> '..'
和 SR.Name[1] <> '.'
等,但没有成功。
如何修改代码以允许名称中包含点的文件夹名称并将它们添加到我的字符串列表中?
谢谢
将搜索字符串从 '*.'
更改为 '*'
您的搜索字符串仅匹配具有空扩展名的对象。您想要匹配所有对象,无论它们是否具有扩展名。