我正在尝试使用目录中的所有文件夹名称填充字符串列表。
以下是我如何能够做到这一点的摘录:
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个文件夹名称在名称中包含点。
为了测试我创建了一个名为&#34; Test Folder&#34;的文件夹。在里面我添加了9个名为的新文件夹:
- 文件夹1
- 文件夹2
- 文件夹3
- 文件夹4
- 文件夹5
- 文件夹.6
- 文件夹7
- F.O.L.D.E.R 8
- 文件夹9
使用&#34;测试文件夹&#34;作为父目录,它只添加以下子文件夹:
- 文件夹1
- 文件夹2
- 文件夹3
- 文件夹4
- 文件夹5
- 文件夹7
- 文件夹9
我一直在试验SR.Name <> '.'
,SR.Name <> '..'
和SR.Name[1] <> '.'
等,但没有成功。
如何修改代码以允许名称中包含点的文件夹名称并将其添加到我的字符串列表中?
由于
答案 0 :(得分:6)
将搜索字符串从'*.'
更改为'*'
您的搜索字符串仅匹配具有空扩展名的对象。您希望匹配所有对象,无论它们是否具有扩展名。