我正在尝试使用目录中的所有文件夹名称填充字符串列表.
以下是我如何能够做到这一点的摘录:
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;
Run Code Online (Sandbox Code Playgroud)
我访问的父文件夹包含220个子文件夹,但例程只添加了216个文件夹名称.经过一些比较和调试后,我注意到未添加的4个文件夹名称在名称中包含点.
为了测试,我创建了一个名为"Test Folder"的文件夹,在里面我添加了9个名为的新文件夹:
- 文件夹1
- 文件夹2
- 文件夹3
- 文件夹4
- 文件夹5
- 文件夹.6
- 文件夹7
- 文件夹8
- 文件夹9
使用"测试文件夹"作为父目录时,它只添加以下子文件夹:
- 文件夹1
- 文件夹2
- 文件夹3
- 文件夹4
- 文件夹5
- 文件夹7
- 文件夹9
我一直在尝试SR.Name <> '.',SR.Name <> '..'和SR.Name[1] <> '.'等,但没有成功.
如何修改代码以允许名称中包含点的文件夹名称并将其添加到我的字符串列表中?
谢谢